• User

    Problema con login e redirect

    Ciao a tutti ho postato il mio problema in un altra sezione e mi hanno detto di rifarlo qui.
    Il mio problema é questo : i ho preso uno script dalla rete per fare il login e funziona benissimo ma io vorrei che un utente una volta loggato sarebbe reindirizzato ad una data pagina in tot secondi e non so proprio come fare , sono alle prime armi con php.
    Io sono arrivato sino al punto dove lo script fa il controllo se l´utente si é loggato e stampa a video il nome dell´utente e questo dovrebbe il codice che lo fa:[php] <?php

    session_name('tzLogin');
    session_set_cookie_params(27246060);
    session_start();
    ?>[/php] e questo il codice esatto che fa il controllo:[php] <?php
    if($_SESSION['id'])
    echo 'Benvenuto, '.$_SESSION['usr'].'! Ti sei registrato e loggato nell´area utenti registrati!';
    else echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>[/php] almeno credo. ma da qui non so creare un redirect efficente perche con quelli trovati in rete tipo:[php]
    <?PHP
    header("location: ../pagina.php");?>
    [/php]mi si blocca lo script e rimane una pagina bianca quando vado a inserire lo script cosi:[php] <?php
    if($_SESSION['id'])
    echo 'Benvenuto, '.$_SESSION['usr'].'! Ti sei registrato e loggato nell´area utenti registrati!';
    header("location: ../pagina.php");

    else echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>[/php]Lo so che sbaglio ma non so cosa qualcuno puo aiutarmi?
    

    Grazie.


  • ModSenior

    Ciao misterbarone,

    ottieni pagina bianca in quanto hai errori di sintassi che però sono nascosti e non riesci a vederli.
    Cosi dovrebbe andare:
    [php]
    <?php
    if($_SESSION['id'])
    {
    header("location: ../pagina.php");
    exit;
    } else
    echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>
    [/php]


  • User

    Ciao detarkita e grazie per la tempestiva risposta.
    Come hai impostato tu il codice mi ritorna questa risposta se provo a vedere se l útente si é loggato :
    Parse error: syntax error, unexpected T_ELSE in C:\AppServ\www\test3\registered.php on line **31.
    **la linea 31 nello script é questa:[php]else echo '<h3>effettua il , <a href="demo.php">login</a> per accedere all´area utenti!</h3>';
    ?>[/php]


  • ModSenior

    Quella riga è corretta, dovresti postare il codice per intero per vedere dov'è l'errore.


  • User

    Ciao lo penso anche io che quella riga é corretta ;quindi non saprei , il codice é come me lo hai postato/corretto tu :[php]<?php
    if($_SESSION['id'])
    {
    header("location: ersilia/galleria.html");
    exit;
    } else
    echo '<h3>Prego, <a href="demo.php">loggati</a> senza sei sempre alla pagina iniziale!</h3>';
    else echo '<h3>effettua il , <a href="demo.php">login</a> per accedere all´area utenti!</h3>';
    ?>[/php]Ho provato prima in locale e mi da quell errore , lo quindi provato online a utente loggato e mi restituisce una pagina bianca.
    Sono nelle tue mani.


  • ModSenior

    Ciao misterbarone,
    fai attenzione alla punteggiatura e alle maiuscole...

    Hai aggiunto un altro else rispetto al codice che ti avevo postato io, non puoi metterne 2 in quel modo.
    Cosa stai cercando di fare?


  • User

    Ok scusa non mi ero accorto dei 2 else adesso cosi com lo hai postato tu non da errori visibili in locale (perche in locale non mi posso loggare non potento ricevere la e-mail con la password) ma online a utente loggato non da errori ma rimane una pagina bianca quando provo a vedere la pagina e non fa il redirect.
    E ho notato che non stampa a video neanche il "benvenuto /nome utente.
    Scusami se sono un po cervellotico nelle spiegazioni.
    Se vuoi provarlo tu stesso a questo indirizzo:misterbarone.de/test1/demo.php, ma come ben sai ti devi registrare poi ti cancello io dopo.


  • ModSenior

    Ciao misterbarone,

    fai attenzione alla punteggiatura e alle maiuscole, ti segnalo le nostre regole:

    3.1. I titoli ed i testi devono essere scritti in italiano corretto, sia grammaticamente che ortograficamente; postare frasi con errori evidenti è sempre una forma di NON rispetto per chi legge.

    3.2. Iniziare i messaggi con la maiuscola e terminare con un punto.

    3.3. Lasciare spazi dopo la punteggiatura.

    Per quanto riguarda il problema, se fai un redirect è ovvio che non può dare in output una scritta, almeno che non fai un redirect dopo X secondi, lo script in questo modo:
    [php]
    <?php
    if(isset($_SESSION['id']))
    {
    header("Location: ../pagina.php");
    exit;
    }
    else
    echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>
    [/php]
    Dovrebbe funzionare correttamente.


  • User

    Ok mi scuso per i miei errori di ortografia e grammatica ; non era

    assolutamente mia intezione offendere qualcuno .

    Tornando al problema del redirect non da errori online ma rimane comunque una pagina bianca .
    Quindi resta sempre sulla pagina di utente registrato non va avanti .

    Io non so cosa fare ho copiato esattamente il codice come me lo hai postato.

    Avevo pensato che forse non andava perche la pagina era in html ; e quindi lo diretto verso una pagina in php ; ma niente.

    Ho provato inoltre a fare un url assoluto e anche qui niente.

    P.S. Scusami ancora per gli errori non voluti.


  • ModSenior

    Il codice devi inserirlo in una pagina .php.
    Per utilizzare le variabili di sessioni devi prima inizializzare la sessione mediante la funzione session_start().
    Per cui se crei un nuovo file .php con all'interno esclusivamente questo codice:
    [php]
    <?php
    session_start();
    if(isset($_SESSION['id']))
    {
    header("Location: ../pagina.php");
    exit;
    }
    else
    echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>
    [/php]


  • User

    Scusami forse mi sono spiegato male ,
    il codice si trova in una pagina .php.

    Io intendevo che ho cambiato la pagina di destinazione del redirect da .html in .php.

    Lo so che ci vuole la funzione session_start().

    Ma é gia presente a inizio pagina o devo comunque rimetterla ? prima di :

    if(isset($_SESSION['id']))

    posto la pagina completa cosi hai una visione di insieme :

    [php]<?php

    session_name('tzLogin');
    session_set_cookie_params(27246060);
    session_start();
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "............w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="...............w3.org/1999/xhtml">

    <head>
    <meta .........-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Solo utenti registrati! | misterbarone login</title>

    <link rel="stylesheet" type="text/css" href="demo.css" media="screen" />
    

    </head>

    <body>

    <div class="container">
    

    <?php
    if(isset($_SESSION['id']))
    {
    header("Location: ..........misterbarone.de/test1/ers/index.php");
    exit;
    }
    else
    echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>
    </div>

    </body>
    </html>
    [/php].

    I puntini logicamente sono al posto dei link completi


  • ModSenior

    E' normale che la pagina si comporti in quel modo, tu stai mandando del codice html in output, e dopo mandi un header al browser dicendo di fare un redirect, e ciò non è possibile.

    Per fare una cosa di quel tipo, puoi benissimo fare cosi:
    [php]
    <?php

    session_name('tzLogin');
    session_set_cookie_params(27246060);
    session_start();
    if(isset($_SESSION['id']))
    {
    header("Location: ..........misterbarone.de/test1/ers/index.php");
    exit;
    }
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "............w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="...............w3.org/1999/xhtml">

    <head>
    <meta .........-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Solo utenti registrati! | misterbarone login</title>

    <link rel="stylesheet" type="text/css" href="demo.css" media="screen" />
    

    </head>

    <body>

    <div class="container">
    

    <h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>
    </div>

    </body>
    </html>
    [/php]


  • User

    Perfetto !!! non ho altre parole .

    Scusa non é che voglio approfittare ;

    Non si potrebbe fare in modo magari temporizzando il redirect di tot secondi in quel frattempo esce il nome dell ´utente loggato ??.

    Ripeto non voglio approfittare ma visto che sei cosi gentile cosa dovrei fare per avere il nome dell útente loggato nella pagina di destinazione??.
    Comunque grazie perfetto.


  • ModSenior

    [php]
    <?php
    session_name('tzLogin');
    session_set_cookie_params(27246060);
    session_start();
    if(isset($_SESSION['id']))
    {

    header("Refresh: 5; URL=misterbarone.de/test1/ers/index.php"); 
    exit;
    

    }
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "............w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="...............w3.org/1999/xhtml">

    <head>
    <meta .........-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Solo utenti registrati! | misterbarone login</title>

    <link rel="stylesheet" type="text/css" href="demo.css" media="screen" />
    

    </head>

    <body>

    <div class="container">
    <?php
    

    if(isset($_SESSION['id']))
    echo $varaibile_con_nome_utente;
    else
    echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>
    </div>

    </body>
    </html>[/php]

    BIsogna vedere dove hai il nome utente, se lo hai in una variabile di sesion è sufficiente fare un echo di quella variabile, se invece hai solo l'id nella varaibile di sessione devi fare una query nella pagina di destinazione per recuperarti il nome utente.


  • User

    Ok grazie per la tua pazienza .

    Vediamo se ho capito ( un problema per volta ) lo script originale era cosi :[PHP] <?php
    if($_SESSION['id'])
    echo 'Benvenuto, '.$_SESSION['usr'].'! Ti sei registrato e loggato nell´area utenti registrati!';
    else echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>
    </div>[/PHP]
    ora io ho fatto cosi :[PHP]<div class="container">
    <?php
    if(isset($_SESSION['id']))
    echo 'Benvenuto, '.$_SESSION['usr'].'!Ti sei registrato e loggato nell´area utenti registrati!';
    else
    echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>';
    ?>
    </div>[/PHP] ho capito bene o c´e qualcosa di sbagliato?? perche cosi non va.


  • ModSenior

    Cosa significa non và? Non ti mostra il nick? E' un pò troppo generica come domanda per capire il problema.


  • User

    Certo scusami mannaggia alla fretta !!.

    Il redirect temporizzato funziona ma non mostra niente ( il Benvenuto_nome_utente) nel frattempo.


  • ModSenior

    Prova togliendo la funzione exit.


  • User

    Ciao scusami per il silenzio prolungato un black-out in mezza cittá......fin ora senza corrente!!!.

    Pefetto adesso va che é una meriaviglia.

    Passiamo all´altro problema ? e cioe come faccio a far apparire il nome dell ´utente loggato nella pagina di destinazione ?? ; ma qui mi dovresti come si suol dire portare con la mano.
    Perche la funzione va creata da zero se ho capito bene.


  • ModSenior

    Se hai il nome utente nella variabile $_SESSION['usr'] come hai detto prima, è sufficiente fare un:
    [php]<?php echo $_SESSION['usr']; ?>[/php]