Visualizzazione risultati 1 fino 19 di 19

Discussione: Aiuto con Database

  1. #1
    Guest

    Exclamation Aiuto con Database

    Salve,
    ho un problema riscontratomi in un metodo di Registrazione sul mio sito.
    qquando l'utente compila il form e preme il bottone di conferma
    questo dovrebbe poireindirizzare tramite get e controllare vari errori
    qualora ci fossero.
    Tutto funziona correttamente tranne una cosa
    quando deve "copiare" le informazioni e inviarle al database
    l'Email non la scrive bensì nella tabella esce scritto "1"
    il codice per l'invio dei file al db è questo
    (Nome tabella: Registrati)

    Codice PHP:
    mysql_query("INSERT INTO Registrati
    (id , username , Password , Email )
    VALUES
    ('', '
    $username', '$Password', '$Email' )") OR DIE(mysql_error());
    nella tabella riporta tutto correttamente anche l'id con l'auto-increment
    solo "Email" mi scrive "1".
    P.S. NON è con valore auto-increment

    la mia domanda è:
    come fare per salvare correttamente l'email nel db?
    Ultima modifica di saitfainder : 22-02-2012 alle ore 11.41.45 Motivo: Usa i tag per il codice

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Ma nella variabile cosa c'è? Hai provato a fartela stampare?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Aggiungo che senza lo script che comprende la valorizzazione delle variabili utilizzate, viene difficile aiutare. Posta lo script in modo da capire.

    Poi aggiungi all'inizio dello script:
    Codice:
    error_reporting(E_ALL);
    e posta gli eventuali errori col codice.


  4. #4
    Guest

    Predefinito

    [QUOTE=biccheddu;882861]
    [QUOTE=saitfainder;882843]
    mi spiego meglio.
    in pratica ho creato un sistema di registrazioni che include la connessione al db.
    questo dopo aver controllato che ci siano tutti i campi e svariati errori
    invia le informazioni nella tabella "Registrati"
    li scrive tutti giusti tranne il campo Email che mi scrive all'interno del valore "1" e non l'email usata nel form.

    Seguo il consiglio di biccheddu
    e provo a srivere il codice fornito all'inizio del codice e mi da errore di compilazione.

    questo è la pagina riguardante l'invio dei dati alla tabella (tengo a precisare che i valori ho controllato e sono questi)

    Codice PHP:
    <?php


    if ( $_GET['stato'] == "confermato" ) {

    // Recupera i dati

    $Nome = $_POST['Nome'];
    $Cognome = $_POST['Cognome'];
    $username = $_POST['username'];
    $Password1 = $_POST['Password1'];
    $Password2 = $_POST['Password2'];
    $Email = $_POST['Email'];

    // campi compilati

    if ( $Nome == TRUE && $Cognome == TRUE && $username == TRUE && $Password1 == TRUE && $Password2 == TRUE && $Email == TRUE ) {

    // controlla se il campo mail non sia stato scritto in maniera errata

    $Email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$Email);

    if (
    $Email == TRUE ) {

    // controlla se l'Email è presente nel database

    $sql = mysql_query("SELECT * FROM Registrati WHERE Email = '$Email'") or die ("E-Mail già Registrata Accedi tramite Login");

    $num_rows = mysql_num_rows($sql);

    if (
    $num_rows == 0 ) {

    // controlla se l'username è presente nel database

    $sql = mysql_query("SELECT * FROM Registrati WHERE username = '$username'") or die ("Nick già in uso");

    $num_rows = mysql_num_rows($sql);

    if (
    $num_rows == 0 ) {

    // ora controlliamo che le password inserite siano identiche

    if ( $Password1 == $Password2 ) {

    // criptiamo la password con md5

    $pass_md5 = md5($Password2);

    $username = mysql_real_escape_string($username);

    $Nome = mysql_real_escape_string($Nome);

    mysql_query("INSERT INTO Registrati
    (id , Nome , Cognome , username , Password1 , Password2 , Email )
    VALUES
    ('','
    $Nome', '$Cognome', '$username', '$Password1', '$pass_md5', '$Email' )") OR DIE(mysql_error());

    // invia una mail con la riuscita registazione (ANCHE QUESTO STO CERCANDO DI AGIUSTARE IN QUANTO L'EMAIL NON LA MANDA)

    mail ($Email, "Registrazione", "Complimenti registrazione effettuata con successo.", "From: [email]admin@waspes.it[/email]");

    // messaggio da far visualizzare all'utente finale

    echo "<script>location='Registrati.php?registrazione=completata';</script>";
    }

    } else {

    echo
    "<script>location='Registrati.php?Error=5';</script>";

    }


    } else {

    echo
    "<script>location='Registrati.php?Error=4';</script>";

    }


    } else {

    echo
    "<script>location='Registrati.php?Error=3';</script>";

    }

    } else {

    echo
    "<script>location='Registrati.php?Error=2';</script>";

    }

    } else {

    echo
    "";

    }


    ?>

    <!-- Fine Dati al DataBase -->
    <!-- Errori -->
    <?php


    // attraverso un if controlla l'errore 2
    if ( $_GET['Error'] == "2" ) {

    echo
    "Dati mancanti... Si prega di controllare.";
    }

    // attraverso un if controlla l'errore 3
    if ( $_GET['Error'] == "3" ) {

    echo
    "L'Email inserita non e idonea per l'iscrizione.";
    }

    // attraverso un if controlla l'errore 4
    if ( $_GET['Error'] == "4" ) {

    echo
    "L'Indirizzo Email e Gia Presente Prova a Loggarti";
    }

    // attraverso un if controlla l'errore 5
    if ( $_GET['Error'] == "5" ) {

    echo
    "Nick già in uso!";
    }

    // attraverso un if controlla l'errore 6
    if ( $_GET['Error'] == "6" ) {

    echo
    "Le password non corrispondono, si prega di correggere";
    }

    // attraverso un if reinviamo alla pagina di completamento
    if ( $_GET['registrazione'] == "completata" ) {

    echo
    "<script>location='Completato.php';</script>";
    }

    ?>
    <!-- /Errori -->
    invece questa e la tabella con i suoi valori scrivo 2 righe di esempio

    Codice:
    id  Nome Cognome username Password1 Password2 Email
    1    Tizio     Rossi       rosso       123           pw in md5     1
    2    Tizio2   Rossi2    rosso2      12345       pw in md5     1
    siccome il codice della pagina è impostato sul controllo di non registrarsi con la stessa email
    da errore all'utente come giusto che sia quindi l'esempio 2 è per far capire che il campo Email non viene auto-incrementato come ID ma ben si ha sempre quel valore li
    Ultima modifica di waspescreazioni : 23-02-2012 alle ore 00.41.31 Motivo: + tag [php], [code]

  5. #5
    Guest

    Predefinito

    Codice PHP:
    // controlla se il campo mail non sia stato scritto in maniera errata

    $Email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$Email);
    Qui effettui l'eregi, per di più funzione deprecata, sulla stessa variabile che ne contiene il valore inviato tramite il form. Questa riga ne sostituisce il valore alla variabile e lo trasforma nel risultato della funzione, quando è 1 true e quando è 0 false: fai una condizione o cambia il nome della variabile.

    Poi preg_match() o filter_var() per il controllo dell'email, ma eregi() lasciala perdere a priori.


  6. #6
    Guest

    Talking

    [QUOTE=biccheddu;883075]

    Quindi il codice diventerà cosi?

    Codice PHP:
    // controlla se il campo mail non sia stato scritto in maniera errata

    $Email = preg_match("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$Email);
    se non è cosi puoi scrivermi l'esempio
    grazie
    P.S. un'altra cosa quando la registrazionbe è andata a buon fine
    questo rimanda alla pagina "completato.php"
    è possibile fargli copiare le variabili username e Password1 anche in un'altra tabella per esempio UTENTi
    se si mi dici il codice e dove inserirlo? (penso sarà sempre un include con una pagina di connessione alla tabella )
    Ultima modifica di waspescreazioni : 24-02-2012 alle ore 14.44.37

  7. #7
    Guest

    Predefinito

    Cambia
    Codice PHP:
    if ( $Email == TRUE ) {
    con:
    Codice PHP:
    if (preg_match('/^[^0-9][a-z0-9_]+([.][a-z0-9_]+)*[@][a-z0-9_]+([.][a-z0-9_]{0,63})*[.][a-z]{2,4}$/i', $Email) {
    in questo modo la variabile $Email rimane col dato inviato dal form.

    Per copiare i dati, basta che fai una seconda query, no?


  8. #8
    Guest

    Predefinito

    [QUOTE=biccheddu;883381]Cambia

    mi da errore
    Parse error: syntax error, unexpected T_VARIABLE in

    se usi skype posso aggiungerti come amico (me lo invii con msg privato se ti va)
    grazie

    per l'altra cosa come posso fare ? copio manualmente i dati da una tabella all'altra?
    Ultima modifica di waspescreazioni : 24-02-2012 alle ore 14.55.08

  9. #9
    Guest

    Predefinito

    Prima di:
    Codice PHP:
    // invia una mail con la riuscita registazione (ANCHE QUESTO STO CERCANDO DI AGIUSTARE IN QUANTO L'EMAIL NON LA MANDA)
    Aggiungi un'altra query e la esegui con mysql_query(), è più semplice di quanto pensi. Prova, se sbagli riprova e poi chiedi aiuto.

    Skype è nel mio profilo qui su AV, ma non pensare ti riesca ad aiutare, lo uso esclusivamente per lavoro


  10. #10
    Guest

    Predefinito

    Dopo:
    Codice PHP:
    mysql_query("INSERT INTO Registrati
    (id , Nome , Cognome , username , Password1 , Password2 , Email )
    VALUES
    ('','
    $Nome', '$Cognome', '$username', '$Password1', '$pass_md5', '$Email' )") OR DIE(mysql_error());
    Aggiungi:
    Codice PHP:
    mysql_query("Query per copiare i dati nella tabella che vuoi") OR DIE(mysql_error());
    Se non hai le minime conoscenze di php e MySQL, ti consiglio o di studiare ed "allenarti" o di lasciare perdere, perché andare avanti chiedendo codici agli altri non ti aiuterà tantissimo.


  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    L'invio alle 2 tabelle funziona.

    il mio problema è quando controlla la mail
    con:
    Codice PHP:
    if (preg_match('/^[^0-9][a-z0-9_]+([.][a-z0-9_]+)*[@][a-z0-9_]+([.][a-z0-9_]{0,63})*[.][a-z]{2,4}$/i', $Email) {
    mi da errore.
    Ultima modifica di waspescreazioni : 24-02-2012 alle ore 15.44.53

  12. #12
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Utilizza filter_var('', FILTER_VALIDATE_EMAIL).
    @biccheddu: me l'avevi detto proprio tu in una discussione...
    Ciao!

  13. #13
    Guest

    Predefinito

    O filter_var() o preg_match(), ma NON eregi().

    Comunque che errore?


  14. #14
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Scusa non ci avevo fatto caso!

    Comunque @waspescreazioni dovresti effettuare dei controlli ai dati ricevuti altrimenti rischi molto!

  15. #15
    Guest

    Predefinito

    DOVE devo mettere il codice???

    devo cambiare la riga
    Codice PHP:
    $Email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$Email);
    con una di queste??
    Codice PHP:
    if (filter_var('/^[^0-9][a-z0-9_]+([.][a-z0-9_]+)*[@][a-z0-9_]+([.][a-z0-9_]{0,63})*[.][a-z]{2,4}$/i', $Email) {
    o
    Codice PHP:
    if (preg_match('/^[^0-9][a-z0-9_]+([.][a-z0-9_]+)*[@][a-z0-9_]+([.][a-z0-9_]{0,63})*[.][a-z]{2,4}$/i', $Email) {
    l'errore è
    Parse error: syntax error, unexpected '{'
    Ultima modifica di waspescreazioni : 24-02-2012 alle ore 17.09.39

  16. #16
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Con questo:
    Codice PHP:
    if(preg_match('/^[^0-9][a-z0-9_]+([.][a-z0-9_]+)*[@][a-z0-9_]+([.][a-z0-9_]{0,63})*[.][a-z]{2,4}$/i', $Email)) {
    mancava la )

  17. #17
    Guest

    Predefinito

    ma dove lo metto al posto di cosa?

  18. #18
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Sostituisci:
    Codice PHP:
    $Email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$Email);

    if (
    $Email == TRUE ) {
    con
    Codice PHP:
    if(preg_match('/^[^0-9][a-z0-9_]+([.][a-z0-9_]+)*[@][a-z0-9_]+([.][a-z0-9_]{0,63})*[.][a-z]{2,4}$/i', $Email)) {

  19. #19
    Guest

    Predefinito

    grazie finalmente qualcuno che capisce il mio dubbio :D

    -------------

    eliminate pure questo topic ;)
    Ultima modifica di andreafallico : 24-02-2012 alle ore 18.35.13 Motivo: usa il tasto Edita

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •