è un po lungo ne faccio un riassunto:
pagina form
Codice PHP:
require "funzioni/header.php";
session_start();
$idsessione=$_SESSION['sid'];
if (empty($idsessione))
{
$numsess=SID;
$_SESSION['sid']=str_replace("PHPSESSID=","",$numsess);
$idsessione=$_SESSION['id'];
}
if (isset($_POST['send'])){
include "funzioni/check.php";
}
<!----------
form action=php_self
<!----------
unset($_SESSION["form"]);
unset($_SESSION["errors"]);
pagina di controllo
Codice PHP:
session_start();
// funzione per il controllo dei dati e la cancellazione dei dati prima di fare il controllo
// Rimuove eventuali tags HTML e tutti i caratteri speciali non ammessi
$name = cleanup_text($name);
$surname = cleanup_text($surname);
$mail = cleanup_text($mail);
$phone = cleanup_text($phone);
$errors = array();
if (empty($phone)||!ereg("[0-9]{8,9}",$phone)) {
$errors["telefono"]= "[*]inserire il telefono senza spazi o altri caratteri\n";
}
//seguono gli altri controlli
$form= array();
$form['nome']=$name;
$form['cognome']=$surname;
$_SESSION["form"] = $form;
$numerr=(count($errors));
if (!empty($numerr)){
//salva l'arrays error nella sessione errors
$_SESSION["errors"] = $errors;
//rimanda la locazione al form iniziale
}elseif (empty($numerr)) {
//upload immagini in cartella temporanea
if (!empty($error)){
//$error è una variabile all'interno dello script per fare l'upload
$errors['immagine']= "immagine".$error."troppo grande per essere caricata";}
else{
header("Location:form_conferma.php");
}
}
pagina form_conferma.php
Codice PHP:
<?php
include "funzioni/header.php";
if (isset($_POST['Submit'])){
header("Location:funzioni/send.php");
}
session_start();
if (empty($_SESSION['form']){
header("Location:form.php");
}
?>
//rimpimento dei campi tramite sessione
//e tasto indietro(fatto cosi spero sia corretto
<input name="indietro" type="button" class="grassetto" value="modifica i toi dati" onClick= "location.href='http://www.miosito.it/form.php'">
la pagina form quando faccio invio viene riprocessata inserendo in testa una pagica di controllo. se alla fine del controllo(quindi prima di ripresentarmi il form e quindi in fine anche la cancellazione delle sessioni) viene riderezionata alla pagina di conferma
Se ci sono dati nella sessione mi appare tutto altrimenti faccio tornare alla pagina del form(l'ho fatto perchè a causa di questo problema uno arrivava alla pagina di conferma vuota e mi riempiva il db di campi vuoti.
Se ci sono errori nella pagina di controllo il form viene riempito dei dati della sessione e poi la sessione[form] viene cancellata assieme a quella [error].
a quel punto però se invio nuovamente il form le sessioni dovrebbe venire ricreate e ripopolate...e invece a volte capita che mi superi i controlli relativi alla presenza o meno di dati e alle espressioni regolari....ma non rimemorizzi le sessioni...a quel punto mi trovo alla pagina di conferma vuota.
a questo putno penso che sia un problema di configurazione del php.ini ....anche se ribadisco questa cosa mi succede una volta su 10 o 20 tentativi.