- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con login e redirect
-
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] <?phpsession_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.
-
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]
-
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]
-
Quella riga è corretta, dovresti postare il codice per intero per vedere dov'è l'errore.
-
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.
-
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?
-
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.
-
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.
-
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.
-
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]
-
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
-
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]
<?phpsession_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]
-
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.
-
[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.
-
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.
-
Cosa significa non và? Non ti mostra il nick? E' un pò troppo generica come domanda per capire il problema.
-
Certo scusami mannaggia alla fretta !!.
Il redirect temporizzato funziona ma non mostra niente ( il Benvenuto_nome_utente) nel frattempo.
-
Prova togliendo la funzione exit.
-
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.
-
Se hai il nome utente nella variabile $_SESSION['usr'] come hai detto prima, è sufficiente fare un:
[php]<?php echo $_SESSION['usr']; ?>[/php]