Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: cosa sbaglio

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    15

    cosa sbaglio

    sono alle prime armi con il php , per mettere in pratica quello che ho imparato finora sto provando a realizzare un accesso ad un sito , ho cominciato dalla parte che reputo piu semplice ( quella dell'iscrizione questa ) ... ma ora mi sono imbattuto in un problema .... sostanzialemente quando cerco di verificare che il username X non sia gia registrato ( poi dovro estenderlo anche alla mail ma questo lo affronto capendo dove sbaglio ora ) mi risponde o che esiste ( pur non esistendo ) o che non esite ( pur esistendo ) ...
    questo è il codice

    Codice PHP:
    <?php include('config.php'); ?>
    <title>attendi</title> 
    <?php 
    $db 
    mysql_connect($host$users) or die("impossibile accedere al db"); 
    mysql_select_db($database$db) or die("impossibile connettersi al db"); 
    $query "INSERT INTO login " "(nome, user, email)" "VALUES('" $_REQUEST['nome'] . "','" $_REQUEST['user'] . "','" $_REQUEST['email'] . "')"
    $query2 " SELECT user FROM login WHERE user = $user"$risultato 
    mysql_query($query2$db); $num mysql_num_rows($risultato); 
    if (
    $num == 0
    { print(
    "spiacente ma il nick è stato scelto
    "
    ); 
    exit; } else { print(
    "possiamo procedere
    "
    ); 
    }
    $mail 'email'
    if (!
    mysql_query($query$db))  

    print(
    "attenzione impossibile aggiungere l'account"); 
    } else { 
    print(
    "utente registrato in attesa di conferma"); 
    $to      $mail
    $subject 'prova'
    $message 'ciaooooo'
    $headers 'From: [email]webmaster@example.com[/email]' "\r\n" ;    
    'Reply-To: [email]webmaster@example.com[/email]' ;"\r\n" .     
    'X-Mailer: PHP/' phpversion();  
    mail($to$subject$message$headers); 

    mysql_close($db); 
    ?>
    dove sbaglio ?
    un altra cosa come mai non riesce ad ereditare dal form o dal db per usarlo come destinatario ?

  2. #2

    Re: cosa sbaglio

    Originariamente inviato da stest
    sono alle prime armi con il php , per mettere in pratica quello che ho imparato finora sto provando a realizzare un accesso ad un sito , ho cominciato dalla parte che reputo piu semplice ( quella dell'iscrizione questa ) ... ma ora mi sono imbattuto in un problema .... sostanzialemente quando cerco di verificare che il username X non sia gia registrato ( poi dovro estenderlo anche alla mail ma questo lo affronto capendo dove sbaglio ora ) mi risponde o che esiste ( pur non esistendo ) o che non esite ( pur esistendo ) ...
    questo è il codice

    Codice PHP:
    <?php include('config.php'); ?>
    <title>attendi</title> 
    <?php 
    $db 
    mysql_connect($host$users) or die("impossibile accedere al db"); 
    mysql_select_db($database$db) or die("impossibile connettersi al db"); 
    $query "INSERT INTO login " "(nome, user, email)" "VALUES('" $_REQUEST['nome'] . "','" $_REQUEST['user'] . "','" $_REQUEST['email'] . "')"
    $query2 " SELECT user FROM login WHERE user = $user"$risultato 
    mysql_query($query2$db); $num mysql_num_rows($risultato); 
    if (
    $num == 0
    { print(
    "spiacente ma il nick è stato scelto
    "
    ); 
    exit; } else { print(
    "possiamo procedere
    "
    ); 
    }
    $mail 'email'
    if (!
    mysql_query($query$db))  

    print(
    "attenzione impossibile aggiungere l'account"); 
    } else { 
    print(
    "utente registrato in attesa di conferma"); 
    $to      $mail
    $subject 'prova'
    $message 'ciaooooo'
    $headers 'From: [email]webmaster@example.com[/email]' "\r\n" ;    
    'Reply-To: [email]webmaster@example.com[/email]' ;"\r\n" .     
    'X-Mailer: PHP/' phpversion();  
    mail($to$subject$message$headers); 

    mysql_close($db); 
    ?>
    dove sbaglio ?
    un altra cosa come mai non riesce ad ereditare dal form o dal db per usarlo come destinatario ?
    E' un pochetto pasticciato :-)
    comunque da quello che leggo

    tu dichiari la Query al db nella variabile "$query" ma non la esegui!
    quindi l'INSERT non lo fa!

    Subito dopo tenti di fare una SELECT....
    (e la esegui con $risultato = mysql_query($query2, $db)

    di un dato che non è stato ancora scritto!

    e comunque quello che più mi confonde è che:

    - inserisci i dati nel DB
    - controlli che esiste l'user
    - se NON esiste ($num == 0) allora scrivi "spiacente ma il nick è stato scelto...
    - altrimenti possiamo procedere

    non dovrebbe essere il contrario?

    L'ultimo pezzo di codice
    if (!mysql_query($query, $db))

    non l'ho capito
    cosa dovrebbe fare?
    "Mi pare di capire dalle stringhe"
    che vorresti controllare che l'utente è già registrato ma non ha confermato giusto?
    ma non capisco in base a quale criterio!

    se cosi fosse dovresti aggiungere un campo nel DB es Status con 1 o 0 dove 1 è gia confermato 0 in attesa di conferma..

    Ma magari non ho ben capito io!
    detto questo facci sapere.

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    15
    che sia un po pasticciato non c'e dubbio , in fin dei conti sto imparando !!
    no la $query la esegue perche quando da il risultato tutto positivo ... dentro al db trovo sia l'user e la sua mail ... il problema e che si comporta in modo anomalo quando la controlla ... o è sempre tutto positivo ( accetta anche 3 volte lo stesso user ) o è tutto negativo ( non accetta nessun user )




    - inserisci i dati nel DB
    - controlli che esiste l'user
    - se NON esiste ($num == 0) allora scrivi "spiacente ma il nick è stato scelto...
    - altrimenti possiamo procedere
    mmm ... forse ho capito dove sbaglio , dovrei prima controllare se esiste l'utente e la mail ... vediamo se ho capito , prima di scrivere i dati dovrei fargli controllare se l'utente x e la mail esistono nel database e quindi poi qual'ora non esistesse puo continuare ... giusto ?
    quindi la query2 dovrebbe diventare la 1 cosi da effettuare il controllo preventivo ?

    Codice PHP:
     if (!mysql_query($query$db)) 
    dovrebbe controllare se dovrebbe controllare il corretto inserimento dei dati nel db ... se da esito positivo ti dira "attenzione impossibile aggiungere l'account "
    se ti da esito negativo ti dira che ti ha aggiunto

    in teoria un domani dovrebbe essere cosi , che ricevi una mail con un codice e clicando genera una password temporanea ( l'ho immaginato cosi ) , ma viste le mie attuali conoscenze non saprei da dove cominciare ...
    grazie per il suggerimento ora mi rimane da capire come scrivere il codice per far si che il codice venga inviato ( intanto faccio un passo alla volta !)

  4. #4
    Originariamente inviato da stest
    che sia un po pasticciato non c'e dubbio , in fin dei conti sto imparando !!
    no la $query la esegue perche quando da il risultato tutto positivo ... dentro al db trovo sia l'user e la sua mail ... il problema e che si comporta in modo anomalo quando la controlla ... o è sempre tutto positivo ( accetta anche 3 volte lo stesso user ) o è tutto negativo ( non accetta nessun user )






    mmm ... forse ho capito dove sbaglio , dovrei prima controllare se esiste l'utente e la mail ... vediamo se ho capito , prima di scrivere i dati dovrei fargli controllare se l'utente x e la mail esistono nel database e quindi poi qual'ora non esistesse puo continuare ... giusto ?
    quindi la query2 dovrebbe diventare la 1 cosi da effettuare il controllo preventivo ?

    Codice PHP:
     if (!mysql_query($query$db)) 
    dovrebbe controllare se dovrebbe controllare il corretto inserimento dei dati nel db ... se da esito positivo ti dira "attenzione impossibile aggiungere l'account "
    se ti da esito negativo ti dira che ti ha aggiunto

    in teoria un domani dovrebbe essere cosi , che ricevi una mail con un codice e clicando genera una password temporanea ( l'ho immaginato cosi ) , ma viste le mie attuali conoscenze non saprei da dove cominciare ...
    grazie per il suggerimento ora mi rimane da capire come scrivere il codice per far si che il codice venga inviato ( intanto faccio un passo alla volta !)
    Ciao,

    Sai che non ho capito dove esegui la $query? :-)

    l'unico punto dove vedo una "negazione - esecuzione" della query è dentro questo if:
    if (!mysql_query($query, $db))

    Sinceramente non ho mai usato questo "metodo" e comunque non credo vada bene nel tuo caso! Però comunque vada se mi dici che scrive sul DB, devi farlo prima della select.

    Più tardi ti posso mandare un esempio commentato di come lo farei io..
    in modo da prendere degli spunti
    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    15
    Ciao luigiMem
    vediamo , un po da quello che ho imparato fin ora ( da un libro dell'apogeo ) , quella dovrebbe essere la l'esecuzione della query 1 ( originale ) quella dove gli dico d'inserire nel db quello appreso dal form ( senza la seconda parte o quando è tutto positivo inserisce nel db ) ...

    te ne sarei grato , almeno provo a capire dove sbaglio ....

  6. #6
    Ciao Tests hai un nome? :-) a pe puoi chiamarmi semplicemente Luigi!

    vediamo di fare un po di chiarezza con uno chema molto semplificato!
    partendo dal presupposto che un utente si stia registrando attraverso un "form".

    Un normale Iter molto semplificato per quello che avresti bisogno prevede:

    1 - Es: database LOGIN con tabelle: user, nome, password, mail, stato (0 di default 1 quando avrà confermato la mail!)

    2 - Form per l'inserimento di un user, nome, password, mail e pulsante "submit"

    3 - controlli: la mail e user esistono gia? è già stata confermata la mail?

    4 - se tutto ok, scrivo i dati sul DB e invio la mail all'utente per confermarla,

    5 - in caso di click sul link conferma, aggiorno il record precedentemente scritto

    Partiamo dal 3° punto i primi 2 mi sembra che tu li abbia fatti!
    do per scontato che tu abbia gia "ottenuto" le 4 variabili passate in POST!

    $user = ($_POST["user"]);
    $nome = .....
    $mail = .....
    $password = .....

    //controllo che la mail sia gia presente: (allo stesso modo farai per l'user)
    $query2 = "SELECT campomail FROM nomedb WHERE mail = $mail";
    $risultato = mysql_query($query2, $db);
    $num = mysql_num_rows($risultato);

    //Se è uguale a zero (non ha trovato corrispondenze)
    tutto ok! proseguo a scrivere nel db e inviare mail
    if ($num == 0) {

    //Scrivo nel db
    $query = "INSERT INTO login (user, nome, email, password, stato) VALUES ('".$user."','".$password."','".$mail."',0)";
    mysql_query($query, $db);
    ...e invio la mail


    //altrimenti errore
    } else {

    //tua azione su errore mail esistente

    }

    FINE!

    L'utente clicca nella mail di conferma!
    il link puoi "divertirti un po come vuoi!!
    es. link nella mail: http://www.miosito.it/confermamail.php?conf=(mail in MD5)&us=(user in MD5)

    quando clicca:

    controllo che mail e user siano presenti nella stessa riga!
    in quel caso aggiorno il record trovato ipostando il valore stato a 1
    con una query di UPDATE.

    Utente registrato!!!

    Ovviamente questo è uno schema molto molto semplificato bisogna prevedere le varie
    "misure di sicurezza", aggiungere campi al db tipo la data di registrazione la data di conferma ecc...

    Scriverti tutto il codice non ti permette di imparare! io ti ho dato una partenza
    adesso prova a ragionarci un po su e fare delle prove

    ogni step "avvisaci" (non parlo solo per me ;-) ) che vedremo di aiutarti a capire se sbagli e perchè!


    NB: spero di non aver fatto confusioni con nomi deli campi ecc!!

    ciao
    Luigi

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    15
    ero talmente tanto preso che mi sono scordato di presentarmi , mi chiamo stefano !!

    per ora ne ha solo 3 (nome , user , email ) anche se oggi stavo ingegnandomi su come aggiungere altri 3 ( a livello di script ) il uno dovrebbe essere un numero univoco random ( che poi nelle mie idee dovrebbe cambiare in base a delle variabili tipo admin e utente ) che identifica l'utente vorrei generarlo con mt_rand ( unica stringa che conosco che genera qualcosa random ) e il secondo era la data d'iscrizione e il terzo l'ip dell'iscritto ( l'idea e di mettere una specie di storico degli ultimi 2 mesi ad esempio ) , qui però mi sono bloccato perche non ho idea di come far a stampare qualcosa che non viene ereditata da un form e quindi inserita dall'utente ... a meno che non inserisco e cambio l'estensione del form da html a php ... in quel caso potrei provare infilarci 2 piccole porzioni di codice per fa ereditare anche data e il numero univoco !... per l'ip non saprei come fare a fagli stampare senza fargli riscrivere sopra prima di un tot .. ma andiamo per gradi non vorrei mettere troppa carne al fuoco !! ... quindi devo procedere a piccoli passetti !!

    punto 3 oggi ci riflettevo c'e un punto debbole nel mio script che non controlla se c'e il carattere @ e il tld alla fine ... per lui potrei inserire pizzaefichi che l'accetterebbe come mail valida ( anche se non verrebbe mai confermata ) ... non ci avevo pensato , quindi devo insere un ulteriore controllo ... non ho la piu pallida idea cosa usare ... ora vado a guardare , se avete un suggerimento ...

    punto 5 in teoria vorrei aggiungere anche la password temporanea che gli ho inviato in una seconda mail ... domanda come detto sopra io conosco solo mt_rand il libro pero non dice se puo generare solo numeri o anche lettere o caratteri ... se generasse anche lettere potrei usarlo per generare sia una pw temporanea sia il codice ...

    per ora faccio un passo alla volta ... e affronto un problema alla volta !

    domani vedo d'implementare quello che tu mi hai suggerito ! .. vediamo se va !!

    assolutamente !!
    Grazie mille x l'aiuto !!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    15

    2 problemini

    dunque nuovo problemino ... ho aggiunto cio che mi ha suggerito luigi e ho provato ad aggiungere 2 delle 3 cose che mi erano venute in mente ... ora ho un problema che non so come risolvere ... ho creato con mt_rand il numero dell'id ( numero casuale compreso tra 100000 e 999999 ) e ho creato sempre tramite mt rand un numero di 10 cifre che servira come codice di conferma( e temporaneo ) ... ora ho un problemino , non so come comportarmi qualora dia il risultato vero ( numero id esistente o codice usato ma non confermato ) ... non credo sia una soluzione valida scrivere per X volte else {mt_rand(100000, 999999); } finche non ne trovi uno libero ( ho pensato if ($num_id !== 0 ma poi non saprei come andare avanti ) .. esiste una soluzione che qualora dia risultato vero gli rifacalcolare il tutto finche non ne trova uno valido ( dia come risposta falso ) ?... un altra domanda ... mi trovo con un altro problema stilistico , non so come fagli calcolare un numero che sia sempre a 10 cifre ( quindi che parta da 0000000001 fino a 9999999999 ) scrivere per 10 volte mt_rand(0, 9) . mt_rand(0, 9) . etc mi sembra stilisticamete brutto !!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    15

    niente da fare non funziona !!

    niente non funziona da o tutti i dati inseriti come insesistenti o come tutti esistenti e come se non controllasse i dati che provengono da $user e li paragonasse con quelli presenti sul di db
    [PHP]
    //ininfluente
    $nome = ('tizio');
    //user esistente inserito da me dentro al db
    $user1 = ('caio2');//user esistente
    //attuamente ininfluente se non risolvo il rebus precedente !
    $email = ('miamail@pizzaefichi.nospam');
    //creo la connessione al db
    $db = mysql_connect($host, $users) or die("impossibile accedere al db");
    //creo la connessione alle tabelle nel db
    mysql_select_db($database, $db) or die("impossibile connettersi al db");
    //creo la query dove gli dico di controllare se l'user è esistente o meno
    $query2 = "SELECT user FROM test2 WHERE user = $user1";
    $risultato = mysql_query($query2, $db);
    $num = mysql_num_rows($risultato);
    //qui secondo quello suggerito da luigi dovrebbe confrontare con ii dati inseriti dal form con quelli sul db
    if ($num == 0) {
    //caso negativo
    echo("spiacente user esistente
    ");
    //termina
    exit;
    } else {
    //caso positivo -> vai a controllare la email
    echo ("user non esistente
    ");
    }
    [PHP]
    dove continuo a sbagliare ??? perche non raffronta $user con l'user dentro al db ??

  10. #10

    Re: niente da fare non funziona !!

    Originariamente inviato da stest
    niente non funziona da o tutti i dati inseriti come insesistenti o come tutti esistenti e come se non controllasse i dati che provengono da $user e li paragonasse con quelli presenti sul di db
    [PHP]
    //ininfluente
    $nome = ('tizio');
    //user esistente inserito da me dentro al db
    $user1 = ('caio2');//user esistente
    //attuamente ininfluente se non risolvo il rebus precedente !
    $email = ('miamail@pizzaefichi.nospam');
    //creo la connessione al db
    $db = mysql_connect($host, $users) or die("impossibile accedere al db");
    //creo la connessione alle tabelle nel db
    mysql_select_db($database, $db) or die("impossibile connettersi al db");
    //creo la query dove gli dico di controllare se l'user è esistente o meno
    $query2 = "SELECT user FROM test2 WHERE user = $user1";
    $risultato = mysql_query($query2, $db);
    $num = mysql_num_rows($risultato);
    //qui secondo quello suggerito da luigi dovrebbe confrontare con ii dati inseriti dal form con quelli sul db
    if ($num == 0) {
    //caso negativo
    echo("spiacente user esistente
    ");
    //termina
    exit;
    } else {
    //caso positivo -> vai a controllare la email
    echo ("user non esistente
    ");
    }
    [PHP]
    dove continuo a sbagliare ??? perche non raffronta $user con l'user dentro al db ??

    Ti passo un pezzo di codice che ho usato in un mio progetto per quanto riguarda l'user:
    allo stesso modo sdoppiano le opportune query puoi verificare tutti gli altri dati!!

    //inizio
    // recupero dal form il valore nick "INVIATO IN POST"( tuo nome user)
    $nick = $_POST['nick'];

    //Verifico se è gia presente
    $checknick = mysql_query("SELECT * FROM datiutente WHERE nick = '$nick'");
    $num_rows = mysql_num_rows($checknick);

    //se esite mi darà 1 altrimenti 0
    //caso: esistente giro l'utente alla pagina di errore con il tipo di errore (mex=nickexist)!!
    if ($num_rows==1) {
    header('location: http://www.tuosito.it/error.php?mex=nickexist');
    exit();
    }
    else
    {
    //TUTTO OK - INSERISCO I DATI
    $queryinsert = "INSERT datiutente (nick) VALUES ('$nick');";
    mysql_query($queryinsert);
    }

    Ovviamente non scrivo solo il nick, la query mi scriverà tutti i valori, ma per semplificartela
    o messo solo il valore del nickname!

    Ti consiglierei di fare un passo per volta e iniziare con queste poche righe! Vedrai che funziona!!

    fammi sapere
    ciao
    Luigi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.