Mantenere dati form in memoria

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Anche febbraio=periodo di esami e sto nella stessa situazione tua a quanto pare.
 

Scar991

Utente Attivo
30 Apr 2012
167
0
0
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...
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Si perché dovresti eliminare la variabile di sessione e non mettere a NULL la variabile $err.
 

Scar991

Utente Attivo
30 Apr 2012
167
0
0
Ho fatto un po' di tentativi ma niente...
Mi da sempre errore, anche se i parametri inseriti sono giusti.

Non so che fare! :S
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
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.
 

Scar991

Utente Attivo
30 Apr 2012
167
0
0
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;
	
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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)
 

Scar991

Utente Attivo
30 Apr 2012
167
0
0
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'>";
}
?>
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
Autore Titolo Forum Risposte Data
N Ciclare sul DB e mantenere i dati PHP 3
S mantenere le modifiche in un file php PHP 2
S [PHP] Come mantenere selezionato checkbox dopo aver cliccato submit PHP 7
A Mantenere la validazione reindirizzandoci su un secondo sito WEb. (ASP.NET) ASP.NET 0
I [Javascript] mantenere un bottone abilitato al refresh della pagina Javascript 1
M [PHP] Mantenere variabile con datagrid nella pagina 2 PHP 1
S [PHP] Mantenere selezionato il valore scelto dopo submit PHP 16
F Mantenere selezione immagine Javascript 1
M [PHP - MYSQL] Mantenere filtro query in tabelle paginate PHP 3
A Mantenere il focus su di una inputbox Javascript 1
G Freelancer: quanto costa aprire e mantenere la partita IVA? Discussioni Varie 3
P Mantenere valore di un form anche dopo refresh PHP 6
O Mantenere una sessione PHP 20
asevenx mantenere sessione login attiva anche in altre pagine PHP 8
Y mantenere sessione login? PHP 5
N Mantenere scelte fatte in un form PHP 5
A Mantenere le proporzioni Photoshop 3
L Convalidare form e mantenere il valore PHP 5
T Mantenere la posizione della pagina dopo postback PHP 1
E Flash mantenere un livello sempre animato Flash 1
J Come mantenere lo stato del "creator"? Javascript 0
S Ereditare e Mantenere Collegate Proprieta Flash 0
E Mantenere la stessa pagina cambianto il contenuto Classic ASP 1
opeth978 mantenere le informazioni PHP 19
C asp: mantenere l ostato 2 consigli Classic ASP 2
G Combo ... mantenere la selezione fatta Classic ASP 0
max75 query su due tabelle e dati doppioni MS Access 2
K Form che manda dati doppi PHP 1
T problemi con dati menu a tendina HTML e CSS 2
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
V dati scomparsi dal sito HTML e CSS 3
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
A Stampare dati da form PHP 15
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
F Scrivere dei dati in word con php PHP 0
otto9due $_FILE non passa i dati dal form PHP 1
N dati tabella non presi PHP 1
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
I Assegnare dati fetch request ad una variabile globale Javascript 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
L Ricezione dei dati su file php da modulo html PHP 6
L inserimento form dati multipli ? PHP 0
S Leggere dati da API e visualizzarli PHP 0
S problema con recupero dati tabella mysql PHP 2

Discussioni simili