Ciao Raga,
Chiedo aiuto, stò sbroccando !!!
Rifacendomi ai consigli di nickang
Ho cercato di sfruttare i suoi script per adattarli ad un semplice passaggio di dati che però richiedono un minimo di controllo, visto che si tratta d'inserzioni da parte di utenti vorrei che quanto meno l'inserzionista sia costretto ad attivare la sua inserzione dalla sua casella di posta.
Fino all'inserimento dei dati nel db e all'invio dell'e-mail tutto ok ( quindi bene per la pagina data_ins.php ma quando l'utente clicca il link all'interno dell'e-mail e va sulla pagina di conferma ( confirm.php ) non succede niente, la pagina risulta bianca e il campo in tabella mk_reg rimane a 0 , sicuramente ho sbagliato qualcosa in confirm.php non essendo bravo in php sicuramente ho combinato una castroneria.
Qulacuno può dare un'occhiata ed individuare il problema ?!
Inoltre, cosa importante hanno un senso in fatto di privacy e sicurezza queste 2 pagine che ho fatto ?
Data_ins.php
Codice PHP:
<?php
require('dbconn.inc.php');
$emailutente = $_POST["email"];
$name = $_POST["nome"];
// Genero un codice
$codice = md5(time()); //uso questo metodo giusto per avere un codice sempre diverso e piuttosto difficile da indovinare
// Ora devo scrivere da qualche parte i dati per poterli controllare al momento dell'attivazione, supponiamo di farlo in un dabatase
$sql = "INSERT INTO mkins (mk_nome, mk_email, mk_code) VALUES ('$name', '$emailutente', '$codice')";
$users = mysql_query($sql) or die(mysql_error());
$id = mysql_insert_id(); // recuperiamo l'id (contenuto nel campo user_id) dell'utente appena inserito
/*Arrivati a questo punto spedisco l’email all'utente (all'indirizzo da lui fornito)
con il link alla pagina confirm.php */
$subject = "Completa e pubblica il tuo annuncio";
//Definiamo la classe che definisce il corpo del messaggio ($message) e le intestazione del messaggio ($headers)
$boundary = "==MP_Bound_xyccr948x==";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
$headers .= "From: [email]info@nomesito.it[/email]\r\n"; //inseriamo l'indirizzo email del mittente, cioè il nostro
$html_msg = "<center>";
$html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">";
$html_msg .= "<tr><td align=\"center\">";
$html_msg .= "</td></tr>";
$html_msg .= "</td></tr><tr><td align=\"center\">";
$html_msg .= "</td></tr></table></center>";
$confirmmessage = "Salve " . $name . ",\n\n";
$confirmmessage .= "Per confermare l'inserimento del tuo annuncio e quindi confermare la pubblicazione devi cliccare sul link sottostante:\n\n";
$confirmmessage .= $html_msg . "\n\n";
// Attenzione! Qui sotto dobbiamo inserire il percorso esatto che porta alla nostra pagina confirm.php
$confirmmessage .= "<a href=\"http://www.nomesito.it/test3/confirm.php?id=$id&mk_code=$codice\">Clicca qui per attivare l'annuncio »</a>";
$message = "This is a Multipart Message in MIME format\n";
$message .= "--$boundary\n";
$message .= "Content-type: text/html; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";
$message .= $confirmmessage . "\n";
$message .= "--$boundary--";
$mailsent = mail($emailutente, $subject, $message, $headers);
if ($mailsent)
{
echo "Salve " . $name . ",
";
echo "Un messaggio è stato inviato all'indirizzo [b]" . $emailutente . "[/b] da te fornito.
";
echo "IMPORTANTE:
";
echo "Per completare la pubblicazione e quindi attivare l'annuncio inserito devi aprire la tua casella e-mail, leggere il messaggio di conferma e cliccare sul link che troverai all'interno.
";
} else {
echo "Errore durante l'invio dell'e-mail.";
}
?>
confirm.php
Codice PHP:
<?php
require ('dbconn.inc.php');
// Recupero i dati che arrivano dal link dell'indirizzo e-mail
$codice = $_GET['mk_code'];
$id = $_GET['mk_id'];
// verifico che l'id e il codice di sicurezza siano congruenti
$query = mysql_query("SELECT * FROM mkins WHERE mk_id = '$id' AND mk_code='$codice' ") or die ("Errore");
if(mysql_num_rows($query)<0) die("Errore nel trasferimento dei dati");
$results = mysql_fetch_array($query);
if($results['mk_code'] == $codice);
{
// aggiorno il campo mk_reg che da 0 passa a 1 dando la possibilità di far visualizzare l'inserzione
$update = "UPDATE mkins SET mk_reg = 1 WHERE mk_id = '$id'";
$result = mysql_query($update) or die(mysql_error());
echo "Complimenti il tuo annuncio è stato pubblicato !";
}
else
{
echo "Spiacente, il codice non corrisponde all'email indicata quindi non possiamo procedere alla pubblicazione dell'annuncio";
die();
}
?>
Dimenticavo io ho usato una sola tabella, spero che non abbia fatto una cavolata !!
10ks
.