problema misterioso session ID

foki

Utente Attivo
2 Lug 2009
48
0
0
Ciao a tutti, ecco la pagina da dove effettuo il login:

PHP:
<?php
session_start();

if( isset($_POST['submit_x']) && (trim($_POST['submit_x'])))
{ 
  if((!isset($_POST['username'])) || ($_POST['username'] == ""))
  {
    echo "Attenzione, username non corretto!";
  }
  elseif((!isset($_POST['password'])) || ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])))
  {
    echo "Attenzione, password non corretta.";
  }else{
    $username = $_POST['username'];
    $password = $_POST['password'];

    @include "config.php";

    $ctrl_login = @mysql_query("SELECT id FROM iscrizioni WHERE username='$username' AND password='$password'") or die (mysql_error());
    if(@mysql_num_rows($ctrl_login)==0)
    {
      echo "Login incorretto.";
    }else{
      $obj = @mysql_fetch_object($ctrl_login) or die (mysql_error());

      $_SESSION['id'] = $obj->id;
      
      @header("Location: iscritti.php");
    }
  } 
}else{
  ?>

l'azione del form...
PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

Il problema è che non mi fa entrare nella pagina di destinazione "iscritti.php" ma mi reindirizza nella index.php, come vuole il codice qua sotto, inserito nella pagina iscritti.php.
PHP:
<?php
session_start();

// controlliamo se è stata inizializzata la sessione
if(isset($_SESSION['id']))
{
  //controllo id con esito positivo
  echo "Benvenuto! Processo di attivazione concluso positivamente!";
}else{
  //controllo sessione con esito negativo
  @header("Location: index.php");
}
?>

non trovo il problema...anche se sembra essere nella codice del login...chiedo il vostro aiuto, grazie. :byebye:

In particolar modo chiedo aiuto a Eliox visto che mi sono basato su una sua guida. ;)
 
Ultima modifica:
ritesta il codice togliendo tutte quelle @, diversamente non riesci a vedere gli errori
 
Eliox il codice funziona, il problema è che non mi fa entrare nella pagina di destinazione "iscritti.php" ma mi reindirizza nella index.php, come vuole il codice inserito nella pagina iscritti.php.

penso che il problema stia nel codice del login...non può essere altrimenti...

comunque il codice l'ho preso da questo ho solo tolto questa riga:
PHP:
$query_attivo = @mysql_query("UPDATE iscrizioni SET attivo='1' WHERE id=".$obj->id) or die (mysql_error());

che serve a settare su attivo l'account dell'untente..e ho trasformato il tuo form per la conferma il un login.
 
se avviane il redirect su inde.php vuol dire che $_SESSION['id'] non è settata, prova semplicemente a stamparla nella pagina iscritti.php e vedi se esiste.
 
Eliox scusa la mia ignoranza ma potresti essere un pò + preciso? :byebye:
 
Non hai capito. Significa che per qualche motivo l'ID di sessione non viene impostato correttamente. Può dipendere da molte cose.

Comunque ti consiglio di leggerti una guida a PHP e un tutorial su come utilizzare le sessioni.
 
Alessandro guarda in alto c'è il codice php della pagina in cui effettui il login e il codice php della pagina in cui arrivi dopo aver effettuato il login.

Secondo te che problema c'è con il session id?
che c'è di wrong nel codice?

grazie per l'attenzione!

:byebye:
 
Eliox missà che ho scoperto la causa del problema, mi sono riletto il tuo tutorial e proprio nella prima pagina in alto hai scritto:

****************
Il database che utilizzaremo, potremmo chiamarlo "iscritti", avrà una struttura molto semplice e conterrà un'unica tabella a cui verranno associati 4 campi:

1. Id: identificativo univoco, numerico intero e autoincermentale per ogni record;
2. email: campo di testo per le email/userID; <------QUA
3. password: campo di testo per le password;
4. attivo, campo ENUM che prevede due soli valori possibili: 0 (utente non attivo), 1 (utente attivo).
****************


io ho aggiunto anche un'altro campo: username

e ho sostituito nel tuo form login "email" con "username" però nel ritaglio qua sopra c'è scritto "email/userID", mi pare di aver capito che l'email fosse legata all'ID, mentre io sostituendolo nel codice con "username" ho "spezzato" qualcosa, penso sia questo il motivo per cui il codice funziona ma la sessione mi da problemi, che ne pensi? il problema potrebbe essere con la tabella in SQL?

:byebye:
 
Ultima modifica:
postami il codice del form, non è che per caso hai lasciato email invece che username?
 
eliox il codice del form è al primo mio post di questa discussione ed anche il codice della pagina di destinazione..dagli un occhio per favore :byebye:
 
ciao, prova due cose (al massimo non funzia)
1. in entrambe le pagine al posto di sesson_start();
metti questo

PHP:
if(!isset($_SESSION)){
session_start ();
}

2. nella punto dove controlli pass e user metti

PHP:
$ctrl_login = mysql_query("SELECT id FROM iscrizioni WHERE username='$username' AND password='$password'") or die (mysql_error());
    if(mysql_num_rows($ctrl_login)==0)
    {
      echo "Login incorretto.";
    }else{
      $obj = mysql_fetch_array($ctrl_login) or die (mysql_error());
      $_SESSION['id'] = $obj['id'];
      header("Location: iscritti.php");
    }

tentar non nuoce
 
Grazie a tutti ma non funziona. :incazz2: mi sto sbattendo ma niente..
ecco (per chi voglia aiutarmi) le "versione", aggiornata con i vostri consigli, del codice:

PHP:
<?php

if( isset($_POST['submit_x']) && (trim($_POST['submit_x'])))
{ 
  if((!isset($_POST['username'])) || ($_POST['username'] == ""))
  {
    echo "Attenzione, username non corretto!";
  }
  elseif((!isset($_POST['password'])) || ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])))
  {
    echo "Attenzione, password non corretta.";
  }else{
    $username = $_POST['username'];
    $password = $_POST['password'];

    include "config.php";

    $ctrl_login = mysql_query("SELECT id FROM iscrizioni WHERE username='$username' AND password='$password'") or die (mysql_error());
    if(mysql_num_rows($ctrl_login)==0)
    {
      echo "Login incorretto.";
    }else{
      $obj = mysql_fetch_array($ctrl_login) or die (mysql_error());
      $query_attivo = mysql_query("UPDATE iscrizioni SET attivo='1' WHERE id=".$obj['id']) or die (mysql_error());

      $_SESSION['id'] = $obj['id'];
      
      header("Location: iscritti.php");
    }
  } 
}else{
?>

P.S. dopo l'ultimo else c'è il codice del form:

PHP:
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p align="center" style="margin-top: -20px; margin-bottom: 0">
<img border="0" src="username.gif" width="56" height="11"><br>
<input name="username" type="username" size="20"><br>
<img border="0" src="password.gif" width="57" height="11"><br>
<input name="password" type="password" size="20"></p>
<p align="center" style="margin-top: -8px; margin-bottom: 0"><br>
<input name="submit" type="image" src="buttonlogin.gif"> 
<a href="registrazione.php">
<img border="0" src="buttonregister.gif" width="70" height="26"></a></p>
<p align="center" style="margin-top: -8px; margin-bottom: 0">&nbsp;</p>
<p align="center" style="margin-top: -8px; margin-bottom: 0"><u>
<font size="1" color="#0000FF" face="Arial"><a href="richiesta_password.php">&gt;&gt;</a></font><a href="richiesta_password.php"><font face="Tahoma" size="1" color="#0000FF"> 
hai dimenticato la password?</font></a></u></p>
</form>
<?
}
?>

vedete un pò.. :byebye:
 
problema session id

ciao prova cosi':
PHP:
    $ctrl_login = @mysql_query("SELECT id FROM iscrizioni WHERE 'username'='$username' AND password='$password'") or die (mysql_error());
    if(@mysql_num_rows($ctrl_login)>0)
    {
	// esito login positivo 
      $obj = @mysql_fetch_object($ctrl_login) or die (mysql_error()); 
    
      $_SESSION['id'] = $obj->id; 
      // redirect alla pagina degli iscritti
      @header("Location: iscritti.php");
      
    }else{....form....// esito login negativo
 
..hai solamente copiato una parte della guida da cui solo partito..quella di eliox..sbaglio?
 
ciao
mi sembra che tu utilizzi due nomi diversi:

<input name="submit" type="image" src="buttonlogin.gif">

e poi

if( isset($_POST['submit_x']) && (trim($_POST['submit_x'])))

prova a controllare
 

Discussioni simili