- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con login e redirect
-
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]
-
OK grazie .
Stasera ci provo ora sto lavorando.
caio
-
Grande!!.
Va una meraviglia grazie veramente bravo.Ora ti pongo la prossima domanda , ma caso mai ritieni che devo aprire un post nuovo perche mi sto prolungando troppo lo faró subito.
:?Il Problema : ora io con questo sistema di login posso fare in modo che se un utente apre una pagina senza loggarsi esce soltanto l ínvito a loggarsi oppure registrarsi , mentre invece se si é loggato la stessa pagina si apre con tutti i contenuti e logicamente il benvenuto utente ?
Non so se sono stato chiaro e ripeto se ritieni che devo aprire un altro post non c´e problema.
N.B. comunque devo dire che sei stato molto gentile ; elementare nelle spiegazioni tanto da far capire anche ad un capoccione come me.
-
Ciao Detarkita .
Lo so che tu hai molti quesiti a cui rispondere , volevo soltanto chiederti : non hai avuto tempo per guardare la mia richiesta ? .
Devo aprire un nuovo post ; non posso fare una richiesta come la mia ?? .
Dimmi tu .
Ok ciao
-
Ciao misterbarone,
un pò di pazienza che rispondo a tutti, pian piano.
Per far cambiare il contenuto della pagina in base allo stato dell'utente loggato/non loggato è sufficiente fare cosi:
[php]
<?php
if(isset($_SESSION['id']))
echo 'CODICE HTML PER UTENTE LOGGATO';
else
echo 'CODICE HTML PER UTENTE NON LOGGATO';
?>
[/php]Per il thread finchè la discussioni rimane attinente possiamo continuare qui, se invece l'argomento cambia è meglio aprire un thread apposito.
-
Ciao Thedarkita .
Hai ragione scusami per l´impazienza .Tornando alla mia ultima domanda ; siccome non ci ho capito molto , sei cosi gentile da inserirmi tu il codice appropriato in questa pagina di esempio cosi sapró bene cosa e come fare per tutte le altre pagine da proteggere ? .
Pagina Esempio :
[php]<?phpsession_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 http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registered users only! | Tutorialzine demo</title><link rel="stylesheet" type="text/css" href="demo.css" media="screen" />
</head>
<body>
<div id="main">
<div class="container">
<h1>Soltanto per utenti registrati!</h1>
<h2>Login per vedere questa risorsa!</h2>
</div><div class="container"> <?php if($_SESSION['id']) echo '<h1>Benvenuto, '.$_SESSION['usr'].'! Ti sei registrato e loggato nell´area utenti registrati!</h1>'; else echo '<h1>Prego, <a href="demo.php">login</a> e tornare più tardi!</h1>'; ?> </div>
<div class="container tutorial-info">
Questo é un sistema di login prelevato dalla rete e modificato per e da il sito di misterbarone :<a href="........misterbarone.eu/" target="_blank">qui un altro sito di misterbarone</a>, e qui un altro : <a href=".........misterbarone.org/" target="_blank">sito 3</a>. </div>
</div></body>
</html>[/php] .
in attesa di una tua risposta ciao e ancora bravo