Problema con PHP e Login..

Salve, ho un problema. Ovvero, quando provo ad eseguire questo codice, la pagina mi rileva la presenza o meno dell'username nel database ma mi da sempre password errata. Il programma prevede due messaggi di errore:

1. Se l'utente non esiste dai errore "Utente non presente"

2. Se l'utente esiste ma la password è scorretta "Password Errata"

Il codice è questo:

<?php

// Connects to your Database 
mysql_connect("localhost", "root", "tano") or die(mysql_error()); 
mysql_select_db("otticaieva") or die(mysql_error()); 


//Checks if there is a login cookie

if(isset($_COOKIE['ID_my_site']))


//if there is, it logs you in and directes you to the members page
{ 
   $username = $_COOKIE['ID_my_site']; 
   $pass = $_COOKIE['Key_my_site'];
   
   $check = mysql_query("SELECT username,password FROM membri WHERE username = '$username'")or die(mysql_error());
   
   while($info = mysql_fetch_array( $check ))    
      {

      if ($pass != $info['password']) 
         {
         
         }

      else
         {
         header("Location: login_main.php");

         }

      }

}


//if the login form is submitted

if (isset($_POST['submit'])) { // if form has been submitted


// makes sure they filled it in

   if(!$_POST['username'] | !$_POST['pass']) {
      die('You did not fill in a required field.');
   }



   $check = mysql_query("SELECT * FROM membri WHERE username = '".$_POST['username']."'")or die(mysql_error());

//Gives error if user dosen't exist

$check2 = mysql_num_rows($check);
if ($check2 == 0) {
      die('Questo user non esiste nel nostro database.');
            }


while($info = mysql_fetch_array( $check ))    
{

$_POST['pass'] = stripslashes($_POST['pass']);
   $info['password'] = stripslashes($info['password']);
   $_POST['pass'] = md5($_POST['pass']);

//gives error if the password is wrong

   if ($_POST['pass'] != $info['password']) {
      die('Password non corretta, torna indietro e prova di nuovo.');
   }

else
{
// if login is ok then we add a cookie 
   
$_POST['username'] = stripslashes($_POST['username']);
   

$hour = time() + 3600; 
setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);   

//then redirect them to the members area
header("Location: login_main.php");
}

}

} else {   

// if they are not logged in
?>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
  <div align="center">
    <table border="0">
      <tr><td colspan=2><h1>Amministrazione</h1></td></tr>
      <tr><td><strong>Username:</strong></td><td>
        <input type="text" name="username" maxlength="40" style="border-style: solid; border-color:#EC1C24">
        </td></tr>
      <tr><td><strong>Password:</strong></td><td>
        <input type="password" name="pass" maxlength="50" style="border-style: solid; border-color:#EC1C24">
        </td></tr>
      <tr><td colspan="2" align="right">
        <input type="submit" name="submit" value="Entra">
        </td></tr>
    </table>
  </div>
</form>
<?php
}


?>

Spero che qualcuno riesca a darmi una mano =(

inviato 8 anni fa
wTano
X 0 X

Ciao,

perché fai questa operazione?

$info['password'] = stripslashes($info['password']);

e soprattutto come è memorizzata nel DB la password, in modo normale o con md5?

 :bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X

Il problema era che il db non aveva criptato la password in MD5(), solo che ora ho un altro problema, ovvero, quando vado fare il login mi da questi warning:

Warning: Cannot modify header information - headers already sent by (output started at C:\Apache\Apache2\htdocs\otticaieva\login.php:6) in C:\Apache\Apache2\htdocs\otticaieva\login.php on line 200

Warning: Cannot modify header information - headers already sent by (output started at C:\Apache\Apache2\htdocs\otticaieva\login.php:6) in C:\Apache\Apache2\htdocs\otticaieva\login.php on line 201

Warning: Cannot modify header information - headers already sent by (output started at C:\Apache\Apache2\htdocs\otticaieva\login.php:6) in C:\Apache\Apache2\htdocs\otticaieva\login.php on line 204

che si riferiscono a queste linee di codice:

setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);   

//then redirect them to the members area
header("Location: ins_catalogo.php");

Qualcuno può aiutarmi a risolvere?

risposto 8 anni fa
wTano
X 0 X

Ho letto che è un problema abbastanza comune.. Si utilizza la funzione ob_start(); ma non ho ancora capito bene come. Riuscite a dirmi cose dovrei rivedere il quel codice per poterlo far partire senza problemi?

risposto 8 anni fa
wTano
X 0 X

Ciao,

prova a sovrascrivere il codice con queste 2 righe:

setcookie('ID_my_site', $_POST['username'], $hour);
setcookie('Key_my_site', $_POST['pass'], $hour);

 :bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X

Nisba.. Non riesco a capire come venirne a capo. Anche perchè questa pagina funzionava senza problemi su un altro sito.. Servirà per caso usare ob_start()?

risposto 8 anni fa
wTano
X 0 X
risposto 8 anni fa
zeta80
X 0 X

Ho risolto così (magari potrà tornare utile a qualche altro pioniere del PHP):

Ho aggiunto, all'inizio della pagina HTML lo script <?php ob_start() ?> e va tutto liscio come l'olio..

Grazie per le info! Purtroppo il PHP e la programmazione del Web è un argomento che non tanto mi affascina, preferisco il C++..

Grazie ancora per la pazienza! Speriamo di non avere più intoppi!

risposto 8 anni fa
wTano
X 0 X

Ci mancherebbe  ;D

Per me la programmazione web è il pane quotidiano anche se mi ha sempre affascinato la programmazione di videogiochi e lì il C++ è utilissimo!

 :bye:

Zeta

risposto 8 anni fa
zeta80
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda