Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    [php]strano problema con le sessioni

    ciao a tutti.. mi sta capitando da un po si tempo un problema con delle sessioni..in pratica si auto cancellano ma con tempi random.

    usando ie7 mi capita questo

    pagina con un form:
    -apre la sessione
    -condizione(se il form è inviato includi pagina controllo)
    -form
    -cancella sessione

    pagina controllo:
    verifica i campi in vari modi
    -salva tutte le variabili e gli errori generati in sessione
    -condizione(se non ci sono errrori fa un redirect paginaconferma)


    a questo punto una volta che invio il form mi ricarica la stessa pagina
    se è tutto ok mi accede alla paginaconferma completamente compilata
    se mi accrogo di aver compilato in maniera errata i campi faccio indietro
    e mi ritrovo il form di prima debitamente compilato(a questo punto la sessione dovrebbe venir cancellata)
    reinvio il form nuovamente(rifa i controlli memorizza tutto etcc) e mi trovo alla pagina di conferma....VUOTA!

    ma io mi domando...se il file di controllo verifica se i campi sono pieni altrimenti mi fa tornare indietro...e se sono pieni salva il tutto in sessione....com'è possibile che arrivati a quel punto mi trovo la pagina di conferma vuota? tenendo presente che tale pagina viene riempita da variabili recuperati da dati in sessione?

    ma soprattutto....perchè mi capita alcune volte si e altre no?
    è come se il sistema continuasse a leggeredopo il redirect e che quindi legga appunto di cancellare la sessione...è possibile?

  2. #2
    E' possibile vedere il codice?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    è 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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.