Ciao cerco di rispondere al meglio alle tue domande:
- la password non viene generata, non viene inserita nel db, non compare nella email generata dallo script dove compare invece il link
- Riguardo l'inserimento dell'echo nello script ammetto la mia ignoranza di php ne so veramente poco, ho comunque ovviato, e non so se è un test valido, ho caricando lo script nella root del sito e ho puntato il file, mi dà "errore (generico)" come risultato.
- controllando script e query per quanto ne posso capire mi sembra che le variabili siano le stesse (forse mi sbaglio e per questo ti posto i codici:
Funzione rand
Codice PHP:
<?php
$email= $_POST['email']; //recupero l'email inserita nel form d' iscrizione
$pws_down = rand(10000,99999); // genero una password casuale tramite la funzione rand()
// mi connetto al DB
$connessione = mysql_connect("host","utente","password");
mysql_select_db("db");
// Inserisco nella tabella degli iscritti l'email, la password e imposto la sua validità a 1
$inserimento_dati = mysql_query ("INSERT INTO utenti_news (nome,email,password,validità) VALUES ('$pws_down','1')");
// Invio una email contenente la password usa e getta
$destinatario = "$email";
$oggetto = "Password download e-book";
$messaggio= "<p>La sua password per accedere al download è: $pws_down</p>";
$messaggio= "<p>Link per il download: <a href='http://miosito/download.php'>Download</a></p>";
$mittente = "Pamela <io@io.net>";
$html = "MIME-Version: 1.0\r\n";
$html .= "Content-type: text/html; charset=iso-8859-1\r\n";
if(@mail($destinatario, $oggetto, $messaggio, $html . "From: $mittente")) {
echo "Email Inviata";
} else {
echo "Errore!";
}
mysql_close($db);
//chiudo la connessione al db
//reindirizzo l'utente a una pagina di ringraziamento, dove gli comunico che gli è stata inviata una email contenete la password e il link per il download.
header("Location: ../pagina_ringraziamento.php");
?>
Query
Codice PHP:
<?php
$pws_down = $_POST['pws_down']; //recupero la password inserita nel form
// mi connetto al DB
$connessione = mysql_connect("host","user","password");
mysql_select_db("db");
//controllo se nella tabella utenti_newsletter esiste la password inserita dall'utente e che sia ancora attiva (validità = 1)
$query_controllo = mysql_query("SELECT * FROM utenti_news WHERE password = '$pws_down' AND validità ='1' ");
//controllo se i risultati ottenuti dalla query sono maggiori di 0
$conteggio_record = mysql_num_rows($query_controllo);
//Se i risultati sono maggiori di 0, modifico il valore del campo validità da 1 a 0 rendendo non più valida e reindirizzo l'utente alla pagina del download
if ($conteggio_record > 0){
$modifica_validità = mysql_query("UPDATE utenti_newsletter SET validità = '0' WHERE password = '$pws_down' ");
echo '<script language=javascript>document.location.href = "http://miosito.net/cartella/file.pdf";</script> ';
} else {
// in caso contrario, reindirizzo l'utente a una pagina di errore
echo '<script language=javascript>document.location.href ="http://miosito.net/news_eror_download.php";</script> ';}
?>
Per darti un'informazione completa i file li ho gestiti in notepad++ usando come formato carattere "UTF8" chiaramente l'estensione dei file è php.
Ultima informazione riguarda la pagina del form d'iscrizione alla news letter, ho provato ad utilizzare il metodo post come tu mi avevi consigliato, da quello che so questo metodo utilizza l'indirizzo email dell'iscritto per l'invio, saprai sicuramente che il sistema non piace a Google a agli altri motori, infatti usando questo metodo non mi arrivava neanche l'email.
Ho dirottato sullo script che ho postato qualche post fa che utilizza il metodo "built in php" che utilizza la mia casella email per gestire tutto. Il tuo script l'ho inserito facendo le prove sia dopo il mio che prima ma il risultato è quello che ti ho riportato all'inizio.
Spero di averti fornito tutte le info del caso
Ciao e grazie