Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - aiuto con le sessioni
Forum - PHP - aiuto con le sessioni

Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 14:14
Mercoledì, 31/08/2011
Salve ragazzi sto cercando di implementare uno script in php per il login.. mi da errore e non capisco da cosa dipende.
Nel file php.ini ho settato la riga session.save_path devo settare anche: session.cookie_**  
vi posto il codice della pagina login.php:
Codice sorgente - presumibilmente PHP

  1. <?php
  2.  
  3. //dati per il login
  4.  
  5. $login_user="luca";
  6.  
  7. $pass_user="luca"; //passwd="prova"
  8.  
  9. $redirect="http://localhost/login.php";
  10.  
  11. //gestione della sessione nel caso in cui i cookie sono disabilitati
  12.  
  13. if(IsSet($_POST['PHPSESSID']) && !IsSet($_COOKIE['PHPSESSID'])) {
  14.  
  15.     $PHPSESSID=$_POST['PHPSESSID'];
  16.  
  17.     header("Location: $redirect?PHPSESSID=$PHPSESSID"); //si ricarica la pagina di login
  18.  
  19. }
  20.  
  21. session_start(); //si inizia o continua la sessione
  22.  
  23. //controllo user e passwd da login
  24.  
  25. if(IsSet($_POST['posted_username']) && IsSet($_POST['posted_password'])) {
  26.  
  27.     if($login_user == ($_POST['posted_username']) && $pass_user == md5($_POST['posted_password']))
  28.  
  29.         $_SESSION['user']=$_POST['posted_username'];
  30.  
  31. }
  32.  
  33. //creazione cookie per login automatico
  34.  
  35. if(IsSet($_POST['ricorda']) && IsSet($_SESSION['user'])) {
  36.  
  37.     $cok=md5($login_user)."%%".$pass_user;
  38.  
  39.     setcookie("sav_user",$cok,time()+31536000);
  40.  
  41. }
  42.  
  43. //logout
  44.  
  45. if($_GET['logout'] == 1) {
  46.  
  47.     $_SESSION = array(); // Desetta tutte le variabili di sessione.
  48.  
  49.     session_destroy(); //DISTRUGGE la sessione.
  50.  
  51.     if(IsSet($_COOKIE['sav_user'])) //se presente si distrugge il cookie di login automatico
  52.  
  53.         setcookie("sav_user",$cok,time()-31536000);
  54.  
  55.     header("Location: $redirect"); //si ricarica la pagina di login
  56.  
  57.     exit; //si termina lo script in modo da ritornare alla schermata di login
  58.  
  59. }
  60.  
  61. //controllo user e passwd da cookie
  62.  
  63. if(IsSet($_COOKIE['sav_user'])) {
  64.  
  65.     $info_cok=$_COOKIE['sav_user'];
  66.  
  67.     $cok_user=strtok($info_cok,"%%");
  68.  
  69.     $cok_pass=strtok("%%");
  70.  
  71.     setcookie("sav_user",$info_cok,time()+31536000);
  72.  
  73.     if($cok_user==md5($login_user) && $cok_pass==$pass_user)
  74.  
  75.         $_SESSION['user']=$login_user;
  76.  
  77. }
  78.  
  79. //caso in cui si vuole ricordare il login, ma i cookie sono off
  80.  
  81. if(!IsSet($_COOKIE['PHPSESSID']) && IsSet($_POST['ricorda']))
  82.  
  83.     header("Location: $redirect?nocookie=1");
  84.  
  85. ?>
  86.  
  87. <HTML>
  88.  
  89.     <HEAD>
  90.  
  91.     </HEAD>
  92.  
  93.     <BODY>
  94.  
  95. <?php
  96.  
  97. $PHPSESSID = session_id();
  98.  
  99. if(!IsSet($_SESSION['user'])) //non siamo loggati, pagina di login
  100. {
  101.  
  102.             if($_GET['nocookie'] == 1) //i cookie sono off e si vuole ricordare il login
  103.  
  104.                 print("Spiacente, ma con i cookie disabilitati non posso fare i miracoli ;)<BR>
  105.  
  106.    Attivali se vuoi ricordare il tuo login.<BR>");
  107.  
  108.             print("<BR><BR> <FORM METHOD=POST ACTION=\"login.php\">
  109.  
  110.    username:
  111.  
  112.    <INPUT TYPE=TEXT SIZE=20 NAME=posted_username><BR>
  113.  
  114.    password:
  115.  
  116.    <INPUT TYPE=PASSWORD SIZE=20 NAME=posted_password><BR>
  117.  
  118.    ricordami: <INPUT TYPE=CHECKBOX NAME=ricorda VALUE=1><BR><BR>
  119.  
  120.    <INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Loggami\"><BR>");
  121.  
  122.  
  123.             if(!IsSet($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
  124.  
  125.                 print("<INPUT TYPE=HIDDEN NAME=PHPSESSID VALUE=$PHPSESSID>");
  126.  
  127.             print("</FORM>");
  128.  
  129.         }
  130.  
  131.         else //siamo loggati pagina riservata
  132.         {
  133.  
  134.             $username=$_SESSION['user'];
  135.  
  136.             print("Il tuo ID ?: $PHPSESSID <BR><BR>");
  137.  
  138.             print("Sei loggato come: $login_user<BR><BR>");
  139.  
  140.             print("<A HREF=\"login.php?logout=1\">logout</A>");
  141.  
  142.         }
  143.  
  144.         ?>
  145.  
  146.     </BODY>
  147.  
  148. </HTML>


ovviamente dovrebbe funzionare solo con user=luca e psw= luca
gli errori sono
Notice: Undefined index: logout in C:\Apache\Apache2\htdocs\login.php on line 45

Notice: Undefined index: nocookie in C:\Apache\Apache2\htdocs\login.php on line 102



PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 15:06
Mercoledì, 31/08/2011
per come lo hai programmato, sia "logout" sia "nocookie" devono essere sempre specificati.

ad ogni modo è tutto specificato nell'errore. devi usare isset anche su logout e nocookie :)

grazie HeDo devo studiare un altro po:) - Bonny - 31/08/11 16:15
non funzoina cmq rifaccio tutto e via! - Bonny - 31/08/11 16:22
PM