Non mantiene le sessioni

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
In un file esterno chiamato funzioni.php ho messo le sessioni, se c'è un errore il form torna indietro ma i campi precompilati diventano vuoti.

Ho provato anche a metterle nella pagina stessa ma esce l'errore "che non sono definite"

PHP:
<?php
session_start();
 //Sessioni per il form Successi
$_SESSION['nomeS'] = $_POST['nomeS'];
$_SESSION['cittaS'] = $_POST['cittaS']; 
$_SESSION['suoemailS'] = $_POST['suoemailS'];
$_SESSION['oggettoS'] = $_POST['oggettoS'];
$_SESSION['messaggioS'] = $_POST['messaggioS'];
?>

poi richiamo il file con include

PHP:
include ("funzioni.php"); 

...

if(isset($_POST['invia'])) {
$data_localeS = time(); 
$nomeS = htmlspecialchars(ucwords(strtolower(trim($_POST['nomeS']))));
$cittaS = htmlspecialchars(ucwords(strtolower(trim($_POST['cittaS'])))); 
$suoemailS = htmlspecialchars(strtolower($_POST['suoemailS'])); 
$suoemailS = str_replace(" ","",$suoemailS); // Toglie gli spazi interni nella mail
$oggettoS = htmlspecialchars(ucfirst(trim($_POST['oggettoS'])));
$messaggioS = htmlspecialchars(ucfirst(trim($_POST['messaggioS']))); 
$validatorS = htmlspecialchars(trim($_POST['validatorS']));
//dichiaro la variabile e la rendo vuota, altrimenti da errore
$erroreS = ''; 

...

//FORM 
<input type="text" name="nomeS" class="campi1-S" value="<?php echo($_SESSION['nomeS'])?>"...
//ECC. tutti i campi
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prova a correggere in

PHP:
<?php
if(isset($_POST['invia'])) {
include ("funzioni.php");
$data_localeS = time(); 
$nomeS = htmlspecialchars(ucwords(strtolower(trim($_POST['nomeS']))));
$cittaS = htmlspecialchars(ucwords(strtolower(trim($_POST['cittaS']))));
//...
?>
se ti da errore la session_start, toglila dal funzioni.php e
PHP:
<?php
session_start();//verifica che sia alla prima riga nemmeno uno spazio prima di <?php
if(isset($_POST['invia'])) {
include ("funzioni.php");
$data_localeS = time(); 
$nomeS = htmlspecialchars(ucwords(strtolower(trim($_POST['nomeS']))));
$cittaS = htmlspecialchars(ucwords(strtolower(trim($_POST['cittaS']))));
//...
?>
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
ciao
prova a correggere in

PHP:
<?php
if(isset($_POST['invia'])) {
include ("funzioni.php");
$data_localeS = time(); 
$nomeS = htmlspecialchars(ucwords(strtolower(trim($_POST['nomeS']))));
$cittaS = htmlspecialchars(ucwords(strtolower(trim($_POST['cittaS']))));
//...
?>
se ti da errore la session_start, toglila dal funzioni.php e
PHP:
<?php
session_start();//verifica che sia alla prima riga nemmeno uno spazio prima di <?php
if(isset($_POST['invia'])) {
include ("funzioni.php");
$data_localeS = time(); 
$nomeS = htmlspecialchars(ucwords(strtolower(trim($_POST['nomeS']))));
$cittaS = htmlspecialchars(ucwords(strtolower(trim($_POST['cittaS']))));
//...
?>

Non va, l'unico che funziona è come il primo post, solo che non mantiene i dati nel form
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non vedo perchè non debba funzionare, guarda lo schema qui sotto

PHP:
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<?php
if(isset($_POST['invia'])){
	$_SESSION['nome']=$_POST['nome'];//che sia ricavato da include o così è lo stesso
	$nome=trim($_POST['nome']);
	echo "$nome <br />";
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <p>
    <input name="nome" type="text" id="nome" value="<?php echo $_SESSION['nome']; ?>">
</p>
  <p>
    <input name="invia" type="submit" id="invia" value="invia">
</p>
</form>
</body>
</html>
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
ciao
non vedo perchè non debba funzionare, guarda lo schema qui sotto

PHP:
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<?php
if(isset($_POST['invia'])){
	$_SESSION['nome']=$_POST['nome'];//che sia ricavato da include o così è lo stesso
	$nome=trim($_POST['nome']);
	echo "$nome <br />";
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <p>
    <input name="nome" type="text" id="nome" value="<?php echo $_SESSION['nome']; ?>">
</p>
  <p>
    <input name="invia" type="submit" id="invia" value="invia">
</p>
</form>
</body>
</html>

Ho messo così

PHP:
..
if(isset($_POST['invia'])) {
//Sessioni per il form Successi
$_SESSION['nomeS'] = $_POST['nomeS'];
$_SESSION['cittaS'] = $_POST['cittaS']; 
$_SESSION['suoemailS'] = $_POST['suoemailS'];
$_SESSION['oggettoS'] = $_POST['oggettoS'];
$_SESSION['messaggioS'] = $_POST['messaggioS'];

$data_localeS = time(); 
$nomeS = htmlspecialchars(ucwords(strtolower(trim($_POST['nomeS']))));
$cittaS = htmlspecialchars(ucwords(strtolower(trim($_POST['cittaS'])))); 
$suoemailS = htmlspecialchars(strtolower($_POST['suoemailS'])); 
$suoemailS = str_replace(" ","",$suoemailS); // Toglie gli spazi interni nella mail
$oggettoS = htmlspecialchars(ucfirst(trim($_POST['oggettoS'])));
$messaggioS = htmlspecialchars(ucfirst(trim($_POST['messaggioS']))); 
$validatorS = htmlspecialchars(trim($_POST['validatorS']));
//dichiaro la variabile e la rendo vuota, altrimenti da errore
$erroreS = ''; 
..

appare questo:
 

Allegati

  • Img_01.png
    Img_01.png
    69,8 KB · Visite: 211

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ti spiego meglio:

se vuoto il form da quei codici e riempio i campi e poi inserisco di proposito il captcha errato, il form torna indietro con i dati che avevo inserito io.

Se invece invio il form correttamente e va a buon fine, poi il form si ripresenta con quei codici (vedi img post precedenta)

PHP:
...
echo "Successo inviato!"; 
echo "<meta http-equiv='refresh' content='0; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
session_destroy();
 
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
dai un occhio alle modifiche dello schema, ti ho aggiunto un pulsante se uno vuole ripulire il tutto.
comunque se usi le sessioni ti conviene mettere l'istruzione
$_SESSION=array();
appena fatto l'insert nel db in modo che comunque il form rimanga pulito se l'inserimento ha avuto successo
in pratica appena prima di
echo "Successo inviato!";

PHP:
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<?php
if(isset($_POST['invia'])){
	$_SESSION['nome']=$_POST['nome'];
	$nome=trim($_POST['nome']);//che sia ricavato da include o così è lo stesso
	echo "$nome <br />";
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}elseif(isset($_POST['azzera'])){//queto serve per ripulire il form se non ti serfe toglilo
	$_SESSION=array();//annulla le sessioni eventualmente (anzi meglio) mettila quando il form è stato inviato correttamente
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <p>
    <!-- guarda la modifica su value= -->
	<input name="nome" type="text" id="nome" value="<?php if(isset($_SESSION['nome'])){ echo $_SESSION['nome'];}else{ echo "";} ?>">
</p>
  <p>
    <input name="invia" type="submit" id="invia" value="invia">
  </p>
  <p><!-- con azzera tutto ripolisci il form e annulli tutte le sessioni se non ti serve toglilo-->
    <input name="azzera" type="submit" id="azzera" value="azzera tutto">
  </p>
</form>
</body>
</html>
 
Discussioni simili
Autore Titolo Forum Risposte Data
Shyson Non mantiene sessioni PHP 0
V [PHP] Variabile modificata in un if non mantiene quel valore PHP 5
Nik Dreamweaver non mantiene le mie pagine salvate Windows e Software 2
felino Mac OS e Client Mail: Stato non in linea Mac e Software 1
I nome utente non esiste nel database PHP 1
M Drag and Drop non capisco le sequenze... Javascript 1
L Suggerimento Pagespeed per non vedenti HTML e CSS 0
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
M Immagini non usate WordPress 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
G Numero zero null non deve visualizzare nulla PHP 0
F Paypal _xclick IPN non risponde PHP 1
R Variabile non risconosciuta dentro una funzione PHP 1
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
E Alert non viene mostrato PHP 1
felino Hardisk WD SATA 1TB 3.5" non si avvia! Hardware 4
K Scrip non funzionante Javascript 1
R jquery che cambia css di un elemento non mi funziona sulla pagina caricata da ajax Ajax 5
zorro CREATE TABLE non funziona PHP 6
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
Sevenjeak Php8 non carica estenzioni PHP 0
R query DELETE non cancella i record PHP 1
otto9due Input text: accetta solo numeri e non può essere vuoto. Javascript 9
G Non vedo frecce su forme Photoshop 2
G Il mio sito dopo aver abilitato l'ssl non visualizza le immagini con indirizzi senza ssl HTML e CSS 0
P jquery refresh div non funziona Javascript 0
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
S Certificato SSL non funzionante Domini 0
zorro modulo di registrazione: funziona ma non sempre PHP 2
D Form contatti non funzionante HTML e CSS 0
MarcoGrazia Trovare record nel database partendo da id non sequenziali PHP 6
M Non ho rinnovato il mio sito su Aruba... Domini 1
T IP INFO NON FUNZIONA PHP 0
Shyson Google search non trova il mio sito SEO e Posizionamento 1
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
P Data scraping in PHP non funziona PHP 4
otto9due $_FILE non passa i dati dal form PHP 1
keyascii Non è mai troppo tardi Presentati al Forum 0
N dati tabella non presi PHP 1
P Pagina modifica record che non funziona PHP 0
Shyson AUTO_INCREMENT non si aggiorna MySQL 2
Shyson Codice wp-login non funziona PHP 2
S WORDPRESS NON FA INSTALLARE PIU NULLA WordPress 9
Shyson Non mi fa accedere al sito WordPress 12
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
R INSERT INTO tabella non funziona Classic ASP 2
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
felino Conversione da MPG a MP4: audio non sincronizzato Windows e Software 1
F Telecamere Wi-Fi non si connettono A nvr IP Cam e Videosorveglianza 0
G Finestra di dialogo che non si apre - programma NUENDO Windows e Software 0

Discussioni simili