Mantenere dati form in memoria

Anche febbraio=periodo di esami e sto nella stessa situazione tua a quanto pare.
 
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...

if(isset($_SESSION['ERRORS'])) {
$err=$_SESSION['ERRORS'];
} else {
$err=NULL;
}

Potresti darci uno sguardo? Non so più che pesci prendere...
 
Si perché dovresti eliminare la variabile di sessione e non mettere a NULL la variabile $err.
 
Ho fatto un po' di tentativi ma niente...
Mi da sempre errore, anche se i parametri inseriti sono giusti.

Non so che fare! :S
 
Controlla la condizione per cui ti dovrebbe dare giusto o sbagliato. Ti da errore alla mail? Allora posta di nuovo il codice che controlla la mail.
 
Ti riscrivo il codice senza i miei tentativi malriusciti...

GUESTBOOK pagina di presentation

PHP:
<?php

session_start();

if(isset($_SESSION['ERRORS'])) {
	$err=$_SESSION['ERRORS'];
} else {
	$err='';
}

if(isset($_SESSION['STMSG'])) {
	$stmsg=$_SESSION['STMSG'];
} else {
	$stmsg='';
}

if (isset($_SESSION['GBCONT'])) {
	$gbcont = unserialize($_SESSION['GBCONT']);
} else {
	$gbcont = array();
}

?>


 [...]


<h1>guestbook</h1>
    <form id="CONTATTI" name="form1" method="post" action="/check_guestbook.php">
      <fieldset>
        <legend>Scrivi nel Guestbook!</legend>
        <p><strong>I messaggi sono moderati: appariranno nel Guestbook solo dopo controllo degli amministratori.</strong></p>
        <p>*<em> campi obbligatori</em></p>
        <?php 
		
		if($err != "") {
			echo "<p>";
			echo $err;
			echo "</p>";
		} elseif ($stmsg != "") {
			echo "<p>";
			echo $stmsg;
			echo "</p>";
		}
		
		?>
        <p>
          <label for="GBNOME">Nome*</label>
          <strong>
          <input type="text" name="GBNOME" id="GBNOME" value="<?php echo $gbcont['GBNOME']; ?>" />
        </strong></p>
        <p>
          <label for="GBCOGNOME">Cognome</label>
          <input type="text" name="GBCOGNOME" id="GBCOGNOME" value="<?php echo $gbcont['GBCOGNOME']; ?>"/>
        </p>
        <p>
          <label for="GBEMAIL">e-Mail*</label>
          <input type="text" name="GBEMAIL" id="GBEMAIL" value="<?php echo $gbcont['GBEMAIL']; ?>"/>
        </p>
        <p>
          <label for="GBMESSAGGIO">Messaggio*</label>
          <textarea name="GBMESSAGGIO" id="GBMESSAGGIO" cols="45" rows="5"><?php echo $gbcont['GBMESSAGGIO']; ?></textarea>
        </p>
        <div class="button">
          <input type="submit" name="send" id="send" value="Invia" />
          <input type="reset" name="GBRESET" id="GBRESET" value="Reset" />
        </div>
        <p>&nbsp;</p>
      </fieldset>
    </form>

checkguestbook.php action

PHP:
<?

session_start();

if (isset($_POST['send']) and $_POST['send'] == 'Invia') {
	
	$tag_permessi = "<br> <br /> <b> <strong> <i> <u> <a>";

	$ERRORE = "";
	
	$GBNOME = addslashes(trim(strip_tags($_POST['GBNOME'])));
	$GBCONOME = addslashes(trim(strip_tags($_POST['GBCOGNOME'])));
	$GBEMAIL = addslashes(trim(strip_tags($_POST['GBEMAIL'])));
	$GBMSG = addslashes(trim(strip_tags($_POST['GBMESSAGGIO'])));
	
	if ($GBNOME == "") {
		$ERRORE .= "Il nome &egrave; obbligatorio<br />";
	}
	
	if (strlen($GBMSG < 5)) {
		$ERRORE .= "Il messaggio è troppo corto!<br />";
	}
	
	if (!filter_var($GBEMAIL, FILTER_VALIDATE_EMAIL)) {
		$ERRORE .= "La mail inserita non è valida<br />";
	}
	
	$_SESSION['ERRORS'] = serialize($ERRORE);
	
	$_SESSION['GBCONT'] = serialize($_POST);
	echo "<meta http-equiv='Refresh' content='0; URL=/guestbook_f.php'>";
	
} else {
	
	$INSERIMENTO = mysql_query('INSERT INTO Guestbook (NOME, COGNOME, MESSAGGIO, INDIRIZZO, DATA_ORA, AUTORIZZA) values ($GBNOME, $GBCOGNOME, $GBMSG, $GBEMAIL, now(), 1)');
	
	if($INSERIMENTO) {
		if(isset($_SESSION)){unset($_SESSION);}
		$STATUSMSG = "Il tuo messaggio è stato inserito correttamente. <br />Sarà visibile dopo la sua approvazione.";
		
		echo "<meta http-equiv='Refresh' content='5; URL=/guestbook_f.php'>";
		
	} else {
		if(isset($_SESSION)){unset($_SESSION);}
		$STATUSMSG = "ERRORE nell'inserimento del tuo messaggio<br />Riprova più tardi.";
		
		echo "<meta http-equiv='Refresh' content='5; URL=/index.html'>";
	}
	
	$_SESSION['STMSG'] = $STATUSMSG;
	
}
 
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 &egrave; 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 &egrave; 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
 
Ultima modifica:
ciao
piccolo consiglio quando ci sono degli errori nelle query
dividere la query e usare il var_dump (che è peggio di carneade)

PHP:
<?php
//.........
$query_str= 'INSERT INTO Guestbook (NOME, COGNOME, MESSAGGIO, INDIRIZZO, DATA_ORA, AUTORIZZA) values ($gbnome, $gbcognome, $gbmessaggio, $gbemail, now(), 1)'; 
var_dump($query_str);
$ins=mysql_query($query_str) or die("ca..o non funzia');
//......
?>
 

Discussioni simili