-
problemi con la sessione
buonasera , avrei bisogno di aiuto.. dunque ho creato una pagina dove mettere il nome per poter accedere , dalla index si passa alla homepage tranquillamente, poi una volta che si cambia pagina esi tenta di riaccedere alla homepage , mi riporta alla index e devo rimettere il nome , cosa mi consigliate ddi fare? ora posto il php per farvi capire meglio ... questa è la index.php
Codice PHP:
<HTML>
<HEAD>
<TITLE>start session</TITLE>
</HEAD>
<BODY><form action="homepage.php"method="POST">
Inserire un nome <input type="text"name="name">
<input type="submit"value="Entra"><br><div align="center">lavori in corso <img src="/upload/sorrisone.gif">
</BODY>
</HTML>
,, questa la homepage
Codice PHP:
<?php
session_start();
$name = htmlspecialchars($_POST['name']);
if($name != ""){
$_SESSION['name'] = $name;}
else {
echo ('Attenzione dovete inserire un nome valido<br/>');
echo('<a href="index.php">Indietro</a>');
exit();}
?>
che blocca nel caso il nome sia nullo , come potrei risolvere il problema?
-
In poche parole non vuoi che se l'utente sia già "loggato" debba reinserire il suo nick giusto?
Se è così basta fare un controllo:
Codice PHP:
<?php if(empty($_SESSION['name'])){ ?>
<HTML>
<HEAD>
<TITLE>start session</TITLE>
</HEAD>
<BODY><form action="homepage.php"method="POST">
Inserire un nome <input type="text"name="name">
<input type="submit"value="Entra"><br><div align="center">lavori in corso <img src="/upload/sorrisone.gif">
</BODY>
</HTML>
<?php }else{
// Qui codice homepage
} ?>
In poche parole questo codice fa in modo che se la sessione name è vuota mostra il form se invece non è vuota ti mostra l'homepage...naturalmente devi personalizzare tu questo codice modificandone la seconda parte... :wink:
-
no.. allora.. io sulla index metto il nome ed entro sulla homepage , poi dalla homepage clicco sulla pagina upload.php entro , ma dopo quando rivado sulla homepage mi fa rimettere il nome , capito? diciamo che la '' sessione '' sta solo sulla homepage , io vorrei fare in modo che la sessione stia su tutte le pagine , esempio , con il metodo GET viene http://www.miosito.altervista.org/ho...php?name=fabio , in teoria se il tutto funzionasse bene dovrebbe venire http://www.miosito.altervista.org/up...php?name=fabio , invece non lo fa , non so se mi sono spiegato bene ..
-
:???: Aspetta non sto capendo, innanzitutto sai che quando inserisci un valore in una sessione dopo sarà disponibile ovunque (richiamandola nell'apposito modo) fino a quando non viene interrotta o fino a quando il browser non viene chiuso?
Cioè se io faccio:
Pagina a.php
Codice PHP:
<?php session_start(); $_SESSION['prova'] = "Contenuto di prova"; ?>
Pagina b.php
Codice PHP:
<?php session_start(); echo $_SESSION['prova']; ?>
Pagina b.php mostrerà "Contenuto di prova" perchè è memorizzato nella sessione...se poi tu vuoi semplicemente inviare il nome utente scelto tramite GET la storia cambia...ma se io non ho capito male tu vuoi che se un utente abbia già inserito il suo nome non c'è bisogno di reinserirlo ed inoltre vuoi che il nome utente inserito sia valido per tutto il sito giusto?
-
si si voglio che l'utente debba mettere il nome solo una volta e che sia valido per tutte le pagine del sito
-
Bene allora te l'ho detto basta eseguire un semplice controllo con le sessioni...quando tu avvii una sessione essa rimarrà valida finchè non scade, non viene fatta scadere o fino a quando il browser non viene chiuso...quando tu hai memorizzato il nome utente in una sessione se vai nel form di upload file e nel codice inserisci:
Codice PHP:
echo $_SESSION['name'];
Tu visualizzerai il valore che l'utente ha inserito nella tua home...poi per inserire il nome una sola volta potresti anche far così:
Codice PHP:
<?php if(empty($_SESSION['name'])){ ?>
<HTML>
<HEAD>
<TITLE>start session</TITLE>
</HEAD>
<BODY><form action="homepage.php"method="POST">
Inserire un nome <input type="text"name="name">
<input type="submit"value="Entra"><br><div align="center">lavori in corso <img src="/upload/sorrisone.gif">
</BODY>
</HTML>
<?php }else{
Header("Location: homepage.php");
} ?>
-
ok.. e se volessi mettere il PHPSESSID come dovrei fare ? del tipo http://www.sito.altervista.org/homep...=r345fg7thgngj ecc
-
Beh a questo punto dovresti ad ogni pagina aggiungere
Codice PHP:
echo SID;
/* Oppure */
echo "?PHPSESSID=".session_id();
Esempi:
Codice PHP:
<a href="pagina.php?<?php session_start(); echo SID; ?>">LINK</a>
/* Oppure */
<a href="pagina.php<?php session_start(); echo "?PHPSESSID=".session_id(); ?>
Natrualmente come avrai ben capito la via più semlice è la prima...
-
a me piace più la seconda , cmq quello che mi hai dato è quello che devo mettere per ogni pagina , nel form della index come lo metto ?
-
Con il tuo codice:
Codice PHP:
<HTML>
<HEAD>
<TITLE>start session</TITLE>
</HEAD>
<BODY><form action="homepage.php?<?php session_start(); echo SID; ?>"method="POST">
Inserire un nome <input type="text"name="name">
<input type="submit"value="Entra"><br><div align="center">lavori in corso <img src="/upload/sorrisone.gif">
</BODY>
</HTML>
Con il mio codice:
Codice PHP:
<?php if(empty($_SESSION['name'])){ ?>
<HTML>
<HEAD>
<TITLE>start session</TITLE>
</HEAD>
<BODY><form action="homepage.php?<?php session_start(); echo SID; ?>"method="POST">
Inserire un nome <input type="text"name="name">
<input type="submit"value="Entra"><br><div align="center">lavori in corso <img src="/upload/sorrisone.gif">
</BODY>
</HTML>
<?php }else{
session_start();
Header("Location: homepage.php?PHPSESSID=".session_id(););
} ?>
P.S. Forse non hai capito che:
Codice PHP:
<a href="pagina.php?<?php session_start(); echo SID; ?>">LINK</a>
E
Codice PHP:
<a href="pagina.php<?php session_start(); echo "?PHPSESSID=".session_id(); ?>">LINK</a>
Visualizzeranno entrambi lo stesso risultato, è cioè: pagina.php?PHPSESSID=codice_sessione
-
funziona tutto , grazie mille , un ulrtima cosa , per fargli stampare il phpsessid nel link come devo fare?
-
ah no no niente :D grazie di tutto