Longo8
Ho provato a fare la modifica, ma niente.
Con questo codice non funziona, nella action non posso dargli il null perché è una serie di stringhe che si accodano...
ciao
ho guardato il tuo ultimo script e secondo me non può funzionare (ti schematizzo per non riscrivere il tutto)
PHP:
<?php
session_start();
if (isset($_POST['send']) and $_POST['send'] == 'Invia') {//se hai dato il submit ed è di valore invia
//qui verifichi i dati valorizzando le varie sessioni
//......
// e qui ritorni al form senza aver fatto altro
echo "<meta http-equiv='Refresh' content='0; URL=/guestbook_f.php'>";
}else{//quindi se NON hai dato il submit e se il submit è diverso da invia esegui il codice seguente
//dici di fare l'insert, ma cosa inserisci se non hai dato il subimit?????
}
?>
sempre schematizzando
PHP:
<?php
session_start();
if (isset($_POST['send']) and $_POST['send'] == 'Invia') {
$tag_permessi = "<br> <br /> <b> <strong> <i> <u> <a>";
$ERRORE = "";
//verifichi i post e valorizzi le varie sessioni
//qui verifichi se sono stati fatti degli errori
if($ERRORE == ""){// se $ERRORE è rimasto vuoto NON ci sono errori quindi fai l'inserimento
$INSERIMENTO = mysql_query('INSERT INTO G......................');
if($INSERIMENTO) {
if(isset($_SESSION)){unset($_SESSION);}
$STATUSMSG = "Il tuo messaggio è stato inserito correttamente. <br />Sarà visibile dopo la sua approvazione.";
}else{
$STATUSMSG = "ERRORE nell'inserimento del tuo messaggio<br />Riprova più tardi.";
}
echo "<meta http-equiv='Refresh' content='5; URL=/index.html'>";
}
// sia con errori o senza ritorni al form
echo "<meta http-equiv='Refresh' content='5; URL=/guestbook_f.php'>";
}else{
//questo potrebbe essere un accesso alla pagina non consentito es http://www.ttuo_sito.it/check_guestbook.php
header("location=index.php");
exit();
}
?>
p.s.
non usare lo short tag <? ma il tag completo <?php
poi per carità non scrivere le variabili in maiuscolo è un obbbbrobio (generalmente i nomi maiuscoli sono riservati alle costanti)
Ho apportato le correzioni, ma ho ancora un problema... Non mi viene effettuato l'inserimento, sebbene gli errori non vengono fuori perché la variabile è vuota (correttamente)... Mi è sfuggito altro?
PHP:
<?php
session_start();
if (isset($_POST['send']) and $_POST['send'] == 'Invia') {
/* CONTROLLO ERRORI */
$tag_permessi = "<br> <br /> <b> <strong> <i> <u> <a>";
$errori = "";
$gbnome = addslashes(trim(strip_tags($_POST['gbnome'])));
$gbcognome = addslashes(trim(strip_tags($_POST['gbcognome'])));
$gbemail = addslashes(trim(strip_tags($_POST['gbemail'])));
$gbmessaggio = addslashes(trim(strip_tags($_POST['gbmessaggio'])));
if ($gbnome == "") {
$errori .= "Il nome è obbligatorio<br />";
}
if (strlen($gbmessaggio)<10) {
$errori .= "Il messaggio è troppo corto!<br />";
}
if (!filter_var($gbemail, FILTER_VALIDATE_EMAIL)) {
$errori .= "La mail inserita non è valida<br />";
}
$_SESSION['errori'] = serialize($errori);
$_SESSION['gbcont'] = serialize($_POST);
echo "<meta http-equiv='Refresh' content='0; URL=/guestbook_f.php'>";
/* FINE CONTROLLO ERRORI */
if($errori == "") {
$connessione=mysql_connect("localhost", "root", "");
$selezione_db=mysql_select_db("my_name", $connessione);
$INSERIMENTO = mysql_query('INSERT INTO Guestbook (NOME, COGNOME, MESSAGGIO, INDIRIZZO, DATA_ORA, AUTORIZZA) values ($gbnome, $gbcognome, $gbmessaggio, $gbemail, now(), 1)');
if($INSERIMENTO) {
$statusmsg = "Il tuo messaggio è stato inserito correttamente. <br />Sarà visibile dopo la sua approvazione.";
if(isset($_SESSION['errori'])){unset($_SESSION['errori']);}
if(isset($_SESSION['gbcont'])){unset($_SESSION['gbcont']);}
} else {
$statusmsg = "ERRORE nell'inserimento del tuo messaggio<br />Riprova più tardi.";
}
$_SESSION['statusmsg'] = serialize($statusmsg);
echo "<meta http-equiv='Refresh' content='5; URL=/guestbook_f.php'>";
} else {
header('location=index.html');
exit();
}
} elseif (isset($_POST['reset']) and $_POST['reset'] == 'Reset') {
/* $gbnome = "";
$gbcognome = "";
$gbemail = "";
$gbmessaggio = "";
$_SESSION['gbcont'] = serialize($_POST);
echo "<meta http-equiv='Refresh' content='0; URL=/guestbook_f.php'>";*/
unset($_SESSION['gbcont']);
unset($_SESSION['errori']);
unset($_SESSION['statusmsg']);
echo "<meta http-equiv='Refresh' content='0; URL=/guestbook_f.php'>";
}
?>
Ho apportato le correzioni, ma ho ancora un problema... Non mi viene effettuato l'inserimento, sebbene gli errori non vengono fuori perché la variabile è vuota (correttamente)... Mi è sfuggito altro?
PHP:
<?php
session_start();
if (isset($_POST['send']) and $_POST['send'] == 'Invia') {
/* CONTROLLO ERRORI */
$tag_permessi = "<br> <br /> <b> <strong> <i> <u> <a>";
$errori = "";
$gbnome = addslashes(trim(strip_tags($_POST['gbnome'])));
$gbcognome = addslashes(trim(strip_tags($_POST['gbcognome'])));
$gbemail = addslashes(trim(strip_tags($_POST['gbemail'])));
$gbmessaggio = addslashes(trim(strip_tags($_POST['gbmessaggio'])));
if ($gbnome == "") {
$errori .= "Il nome è obbligatorio<br />";
}
if (strlen($gbmessaggio)<10) {
$errori .= "Il messaggio è troppo corto!<br />";
}
if (!filter_var($gbemail, FILTER_VALIDATE_EMAIL)) {
$errori .= "La mail inserita non è valida<br />";
}
$_SESSION['errori'] = serialize($errori);
$_SESSION['gbcont'] = serialize($_POST);
echo "<meta http-equiv='Refresh' content='0; URL=/guestbook_f.php'>";
/* FINE CONTROLLO ERRORI */
if($errori == "") {
$connessione=mysql_connect("localhost", "root", "");
$selezione_db=mysql_select_db("my_name", $connessione);
$INSERIMENTO = mysql_query('INSERT INTO Guestbook (NOME, COGNOME, MESSAGGIO, INDIRIZZO, DATA_ORA, AUTORIZZA) values ($gbnome, $gbcognome, $gbmessaggio, $gbemail, now(), 1)');
if($INSERIMENTO) {
$statusmsg = "Il tuo messaggio è stato inserito correttamente. <br />Sarà visibile dopo la sua approvazione.";
if(isset($_SESSION['errori'])){unset($_SESSION['errori']);}
if(isset($_SESSION['gbcont'])){unset($_SESSION['gbcont']);}
} else {
$statusmsg = "ERRORE nell'inserimento del tuo messaggio<br />Riprova più tardi.";
}
$_SESSION['statusmsg'] = serialize($statusmsg);
echo "<meta http-equiv='Refresh' content='5; URL=/guestbook_f.php'>";
} else {
header('location=index.html');
exit();
}
} elseif (isset($_POST['reset']) and $_POST['reset'] == 'Reset') {
/* $gbnome = "";
$gbcognome = "";
$gbemail = "";
$gbmessaggio = "";
$_SESSION['gbcont'] = serialize($_POST);
echo "<meta http-equiv='Refresh' content='0; URL=/guestbook_f.php'>";*/
unset($_SESSION['gbcont']);
unset($_SESSION['errori']);
unset($_SESSION['statusmsg']);
echo "<meta http-equiv='Refresh' content='0; URL=/guestbook_f.php'>";
}
?>
Molto probabilmente dipende da questo, come viene gestita una stringa con gli apostrofi è differente da come viene gestita una con le 2 virgolette in php, fai attenzione
PHP:
mysql_query("INSERT INTO Guestbook (NOME, COGNOME, MESSAGGIO, INDIRIZZO, DATA_ORA, AUTORIZZA) values ('$gbnome', '$gbcognome', '$gbmessaggio', '$gbemail', now(), 1)") or die(mysql_error());
edit: c'erano anche gli apostrofi da aggiungere dato che sono delle stringe, inoltre ti ho aggiunto il controllo errori