Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    668
    Fai un po' di debug vecchio stampo, metti un paio di echo/dump e vedi cosa ti da:

    codice:
    if (empty($form)) {
      echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>';
      unset($_SESSION['finish']);
    }

    Così vedi se entra nell'if e che valore hanno le var di sessione prima dell'unset. Secondo me c'è qualche problema con la sessione, così si dovrebbe poter capire qualcosa in più.

  2. #12
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    63
    Prima di fare ulteriori prove, cancella le sessioni e i cookie (dai settings del browser), quindi come ti ha suggerito M4V1 fai un pò di debug con var_dump(). Meglio var_dump che echo, perché eventuali valori booleani non li vedresti stampati a video con echo().

    Attiva anche la visualizzazione degli errori, sia warning che errori fatali, etc...

  3. #13
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Dunque il problema l'ho risolto ma inspiegabilmente; mi è bastato spostare lo script dell'unset in tutte le pagine che utilizzavano la sessione 'finish', mentre prima era in una pagina che veniva scritta con require, ho provato sia il common che il footer.

    Spiego meglio, lo script dell'unset lo avevo nel common.php in cui dichiaravo tutte le variabili come la $conn, $form, etc., ma voi potreste pensare che magari è stato messo prima di qualche variabile e allora io ho spostato lo script in un'altra pagina in cui non poteva verificarsi questo errore, cioè footer.php!

    Ma ripeto che la cosa strana è che
    echo $form; viene stampato 'registro'!
    if (empty($form) && !empty($_SESSION['finish'])) {
    echo $_SESSION['finish']. '_dentro'; non viene stampato NIENTE!
    unset($_SESSION['finish']);
    }
    echo $_SESSION['finish']; viene stampato ed ha il valore $log!

    Eppure $_SESSION['finish'] risulta sempre UNSET.
    Per togliervi ogni dubbio, anzichè unset posso mettere un valore tipo 'ciccio' e se stampo un echo prima di:
    if ($form == "registro" && $method == "POST") {
    if (empty($_SESSION['finish'])) {
    etc...
    STAMPA 'CICCIO';


    Quindi non so perchè e non so come ma il problema sembra risolversi se inserisco unset nelle pagine subito dopo require 'common.php'!
    Avete voi la benchè minima idea di questo funzionamento inspiegato?

    PS. Non è Ajax ma semplici pagine.php con common.php, header.php e footer.php scritti all'interno con require!


    Non mi dite che il Browser decide che siccome quella $_SESSION['finish'] non sia presente in tutte le pagine, allora è bene che io cambi e la metta soltanto nella pagine interessate?!

  4. #14
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,696
    Ma ripeto che la cosa strana è che
    echo $form; viene stampato 'registro'!
    if (empty($form) && !empty($_SESSION['finish'])) {
    echo $_SESSION['finish']. '_dentro'; non viene stampato NIENTE!
    e ci mancasse pure, empty($form) è FALSE, hai detto tu che $form contiene 'registro', come fa ad entrare lì dentro secondo te?

    Facciamo così, hai risolto e va bene, ma lascia perdere "magia", "inspiegabilmente" e simili, c'era un errore nel codice.

  5. #15
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Scusami Alhazred ma io devo capire questo errore... come sia possibile:

    echo $form. ' ' .$_SESSION['finish']; viene stampato 'registro' e 'ciccio'!
    if (empty($form) && !empty($_SESSION['finish'])) {
    echo $_SESSION['finish']. '_dentro'; non viene stampato NIENTE!
    $_SESSION['finish']='ciccio';
    }
    echo $_SESSION['finish']; viene stampato ed ha il valore 'ciccio'!

    Naturalmente invece il submit setta $_SESSION['finish']=$log

    Ho provato a cancellare il cookie PHPSSID e sembrava funzionare ma poi è tornato tutto alla non normalità!
    Ho fatto var_dump e non noto niente di diverso.

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    668
    $form non è vuoto quindi dentro l'if non ci entra, funziona come dovrebbe secondo me.

  7. #17
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,696
    Quote Originariamente inviata da Igreo Visualizza il messaggio
    Scusami Alhazred ma io devo capire questo errore... come sia possibile:...
    Te l'ho spiegato nell'ultimo post ed ora te lo ha ripetuto M4V1. Se ancora hai difficoltà a comprendere il problema, valuta di ricominciare a studiare PHP e la logica della programmazione.

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 © 2019 vBulletin Solutions, Inc. All rights reserved.