Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Problema (penso) redirect php.

    Salve a tutti.
    Sul mio sito ho creato uno script per il login solo che noto dei problemi con la disconnessione dell'utente.
    Con alcuni broswer funziona(chrome, internet explorer), mentre con altri (opera, firefox) no. Con le versioni mobile per smartphone android e safari funziona perfettamente.
    Vi spego in cosa consiste.
    Dalla home l'utente clicca su il link accedi e viene indirizzato alla pagina accedi.php.
    Qui c'è un form con username, password e bottone per conferma. Al click del bottone, se il campo username non è vuoto parte una richiesta ajax che controlla se password e username sono presenti nel database, in caso affermativo elimina tutte le sessioni esistenti nella relativa tabella, crea un id univico e lo inerisce nella tabella poi lo invia per POST alla stessa pagina. Ora con l'invio per POST della chiave appena inviata, prima del tag <head> uno script php controlla se effettivamente è presente l'id nella tabella sessioni e in caso affermativo aggiunge un cookie con l'id e si viene reindirizzati con header('location ') alla home page dove ci si presenta loggati.
    Ora con chrome se si clicca sul pulsante di disconnessione tutto funziona, veniamo reindirizzati alla pagina logout.php, la quale, ovviamente prima del tag <head> , controlla la presenza del cookie, ne acquisisce il valore, lo cerca nella tabella sessioni cancella le righe con quel id univoco. Infine veniamo inderizzati nuovamente alla home page e siamo disconnessi.
    Il problema che si verifica con opera e altri è che cliccando su il pulsante di disconnessione sembra che siamo automaticamente reindirizzati alla home page senza che si esegue lo script php che cancella la sessione.
    Prima di usare un semplice redirect usavo, il redirect 301 MOVE PERMANENT, ma credo di essermi sbagliato sul suo utilizzo.
    Vi posto il codice relativo alla pagina logout.php
    codice:
    <html>
    	<?php
    		error_reporting(E_ALL);
    		include_once "/membri/letsgetout/script/php/login.php";
    		$login = new login();
    		$login->logout();
    		header("Location: index.php");
    	?>
    Questa chiama la funzione logout della classe login, che è così strutturata:
    Codice PHP:
    public function logout(){
            
    $this->connetti();
            
    $id $_COOKIE['lgo_session_id'];
            
    $res $this->action("DELETE FROM sessioni WHERE uid='$id'");
            
    $this->disconnetti();
        } 
    Aggiungo che credo sia redirect il problema, pur non sapendo benissimo la funzione del 301, perchè se nella pagina logout.php cancello proprio la riga header('location: ') vengo lo stesso inderizzato.

    Grazie per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Sei sicuro che sia il redirect?
    Hai provato a fare una chiamata in ajax con l'attuale script che usi
    ad una semplice pagina php per farti restituire l'output o altro, funziona su tutti i browser?

  3. #3
    Non penso sia la chiamata ajax il problema, infatti l'unica chiamata ajax è quella che controlla i dati inseriti e in caso sono corretti inserisce la nuova riga nella tabella del database. Questo lo fa!! Controllo passo per passo con phpadmin e anche con opera, dopo l'esecuzione della chiamata ajax viene inserito una nuova riga nella tabella e il cookie, il problema penso sia nel logout.

    La cosa veramente strana è che seppure ho eliminato la riga nello script php che reindirizza alla home, con opera vengo lo stesso indirizzato!!!

    Se volete provare vi creo un account di prova.
    Utente prova
    Password provaprova
    www.letsgetout.altervista.org
    E' una cosa assurda, ma potrebbe essere un problema del server?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da LucaGessi
    Non penso sia la chiamata ajax il problema, infatti l'unica chiamata ajax è quella che controlla i dati inseriti e in caso sono corretti inserisce la nuova riga nella tabella del database. Questo lo fa!! Controllo passo per passo con phpadmin e anche con opera, dopo l'esecuzione della chiamata ajax viene inserito una nuova riga nella tabella e il cookie, il problema penso sia nel logout.

    La cosa veramente strana è che seppure ho eliminato la riga nello script php che reindirizza alla home, con opera vengo lo stesso indirizzato!!!

    Se volete provare vi creo un account di prova.
    Utente prova
    Password provaprova
    www.letsgetout.altervista.org
    E' una cosa assurda, ma potrebbe essere un problema del server?
    Se avevi usato il redirect 301 per diverso tempo potrebbe essere dovuto anche al server
    aspetta un po o fai altre prove in un altra pagina

  5. #5
    Quindi era sbagliato usare il redirect 301 vero??
    Serve solo a reindirizzare quando le pagine sono vecchie?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da LucaGessi
    Quindi era sbagliato usare il redirect 301 vero??
    Serve solo a reindirizzare quando le pagine sono vecchie?
    Serve per fare una specie di redirect permanente, ad esempio in pagine che
    devi sostituire con quelle nuove, se trasferisci un dominio o cosi via

  7. #7
    Quindi era completamente sbagliato l'utilizzo che ne facevo.
    Per di più ho riprovato e ora sembra funzionare quindi forse era proprio quello il problema.

  8. #8
    Ho aspettato qualche giorno ma il problema si presenta ancora!
    Cosa potrebbe essere?
    Dite che se fosse il redirect se cambiassi la cartella in cui risiede la pagina logout.php funzionerebbe?

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da LucaGessi
    Ho aspettato qualche giorno ma il problema si presenta ancora!
    Cosa potrebbe essere?
    Dite che se fosse il redirect se cambiassi la cartella in cui risiede la pagina logout.php funzionerebbe?
    A me non fa nessun redirect, ho fatto l'accesso con l'account di prova, fa il logout
    ma per l'appunto non il redirect, inoltre da un errore se si fa accesso diretto
    alla pagina da sloggato, $_COOKIE['lgo_session_id'] controlla prima che esista
    quando lo recuperi

  10. #10
    Il redirect ora non lo fa perchè in questo momento lo script non ha la riga header(location ) per provare, mentre all'errore non lo avevo riscontrato, ora provo!
    A me non da nessun errore???
    Come è possibile?

    Credo che debba aggiornare la pagina, perchè ora effettivamente c'è il controllo sulla presenza del cookie.Ho corretto if(_COOKIE[...]) con if(isset(_COOKIE[...]).

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.