Visualizzazione risultati 1 fino 11 di 11

Discussione: PHP conferma email via php

  1. #1
    Guest

    Predefinito PHP conferma email via php

    Allora, sto cercando di creare un sistema di registrazione dove si invia una mail alla fine, e per confermarla si clicca su un link che ti porta a una pagina che recupera il tutto con GET. Questo è il codice della mail
    Codice PHP:
    '*.org/attivazione.php?codutente=' .$codutente. '
    A questo punto, senza problemi si viene reindirizzati alla pagina... il problema è che nel database sql ho una riga chiamata "confermamail" che dovrebbe passare da 0 a 1 quando viene confermata. peccato non succeda. Ecco il codice di "attivazione.php"
    Codice PHP:
    <?php
    //dopo essermi connesso al database e avere confermato l'avvenuta connessione
    {
    $codutente=$_GET['codutente'];
    if(
    $sql="UPDATE Users
    SET confermamail='1'
    WHERE codutente='
    $codutente';")
    {
    echo
    "Attivazione avvenuta con successo.";
    }
    else
    {
    echo
    "Attivazione non riuscita.";
    }
    }
    ?>
    Nel database le impostazioni di confermamail è "confermamail" "int(2)" "si null" "0"

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,709

    Predefinito

    Codice PHP:
    if($sql="UPDATE Users
    SET confermamail='1'
    WHERE codutente='
    $codutente';")
    In questa riga assegni la stringa della query da eseguire nella variabile $sql. Poi con l'if valuti l'espressione di assegnamento (non ha molto senso).

    Quindi, devi effettivamente eseguire quella query e non soltanto mettere la stringa da eseguire in una variabile!

    Ciao!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    In questa riga assegni la stringa della query da eseguire nella variabile $sql. Poi con l'if valuti l'espressione di assegnamento (non ha molto senso).

    Quindi, devi effettivamente eseguire quella query e non soltanto mettere la stringa da eseguire in una variabile!

    Ciao!
    Scusami, ho completamente sbagliato... in ogni caso, ora ho modificato così

    Codice PHP:
    <?php
    //dopo essermi connesso al database e avere confermato l'avvenuta connessione
    {
    $codutente=$_GET['codutente'];
    $sql="UPDATE prova SET confermamail='1' WHERE codutente='$codutente';";
    $res=mysql_query($sql,$con);
    if(!
    $res)
    {
    die (
    "Attivazione non riuscita <br> $res" . mysql_error());
    }
    else
    {
    mysql_close();
    echo
    "Attivazione avvenuta con successo.";
    }
    }
    ?>
    Mi da di continuo attivazione non riuscita...
    Per controllare, $res non da alcun risultato e neanche mysql_error().
    Non riesco a capire l'errore...

  4. #4
    Guest

    Predefinito

    Ciao, innanzitutto ti suggerisco di fare un escape del codice che prendi via GET, altrimenti sarà molto facile violare la tua pagina di attivazione e combinare casini:
    Codice PHP:
    $codutente = mysql_real_escape_string($_GET['codutente']);
    Tornando al tuo problema, se provi a metterci un error_reporting(E_ALL) in cima alla pagina non ti viene fuori nessun notice e/o warning?

  5. #5
    Guest

    Predefinito

    Intanto grazie per il consiglio di sicurezza.
    Mi dice: "supplied argument is not a valid MySQL-Link resource in prova.php on line 12"
    linea 12:
    Codice PHP:
    $res=mysql_query($sql,$con);

  6. #6
    Guest

    Predefinito

    Figurati ;) Comunque quell'errore significa che il secondo parametro che passi a mysql_query() non è una connessione MySQL valida. Sicuro che il nome della variabile sia giusto? Magari non è $conn o cose simili? Comunque, se gestisci una sola connessione nello script il secondo parametro può anche essere omesso e mysql_query userà l'utima connessione creata.

  7. #7
    Guest

    Predefinito

    togliendo il $con dalla query, mi dice che non è stato selezionato nessun database, però la procedura di connessione è la stessa usata nel sistema di registrazione, che fuonziona...

  8. #8
    Guest

    Predefinito

    Hai usato mysql_select_db()?
    Fai cosí, metti tutto il codice della pagina cosí vediamo bene lo script (ricordati di togliere la password, se l'hai messa).

  9. #9
    Guest

    Predefinito

    Codice PHP:
    <?php
    $con
    =mysqli_connect("localhost","user","pass","my_db");
    if (
    mysqli_connect_errno())
    {
    echo
    "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    else
    {
    $codutente = mysql_real_escape_string($_GET['codutente']);
    $sql="UPDATE prova SET confermamail='1' WHERE codutente='$codutente';";
    $res=mysql_query($sql);
    if(!
    $res)
    {
    die (
    "Attivazione non riuscita <br> $res" . mysql_error());
    }
    else
    {
    mysql_close();
    echo
    "Attivazione avvenuta con successo.";
    }
    }
    ?>
    I valori messi nella connessione sono giusti...

  10. #10
    Guest

    Predefinito

    Aspetta, tu la connessione al database la stai effettuando con mysqli_connect(). Questo significa che per effettuare le query devi usare la funzione mysqli_query() e non mysql_query(). E così per tutte le altre funzioni.

    Occhio a non fare confusione tra le due classi di funzioni, perché esse gestiscono le connessioni a MySQL in modo diverso.

  11. #11
    Guest

    Predefinito

    Qua dimostro la mia più completa ignoranza... grazie mille per avermelo detto... come si è notato, sto cercando di imparare il più possibile... ora, mi dà una marea di errori avendo messo in ordine il mysqli
    Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in prova.php on line 10

    Warning: mysqli_query() expects parameter 1 to be mysqli, string given in prova.php on line 12

    Warning: mysql_close(): no MySQL-Link resource supplied in prova.php on line 19
    Linea 10

    Codice PHP:
    $codutente = mysqli_real_escape_string($_GET['codutente']);
    linea 19

    Codice PHP:
    mysqli_close()
    Linea 15

    Edit
    ---------------------------------------------------------------------

    Allora, ho risolto, bastava mettere i $con quindi specificare la connessione prima della variabile. E anche nel close bisognava specificare quale connessione chiudere. Grazie mille a chi ha tentato di aiutarmi, riuscendo a chiarirmi alcune cose.
    Ultima modifica di Giampli : 28-07-2013 alle ore 17.19.11

Regole di scrittura

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