Archief - PHP: login script werkt niet

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Joskevic

Legacy Member
Ik probeer al een hele tijd om een werkend php/mysql loginscript te maken, maar steeds mislukt dit. Ik kan de gebruiker succesvol toevoegen, maar als ik dan probeer in te loggen krijg ik dat ik foute logininformatie ingeef. Dit is de code die ik momenteel heb. Kan iemand mij zeggen wat ik fout doe?

Login.php
PHP:
<?php
session_start();
$con    = mysql_connect('localhost','***,'***') or die(mysql_error());
mysql_select_db('***',$con);

if ($_GET["op"] == "login")
 {
 if (!$_POST["username"] || !$_POST["password"])
  {
  die("U moet een gebruikersnaam en wachtwoord ingeven.");
  }

 // Create query
 $q = "SELECT * FROM login "
  ."WHERE username='".$_POST['username']."' "
  ."AND password=PASSWORD('".$_POST['password']."') "
  ."LIMIT 1";
 // Run query
 $r = mysql_query($q);

 if ( $obj = mysql_fetch_object($r) )
  {
  // Login good, create session variables
  $_SESSION["valid_id"] = $obj->id;
  $_SESSION["valid_user"] = $_POST["username"];
  $_SESSION["valid_time"] = time();

  // Redirect to member page
  Header("Location: index.php?pagina=Leden");
  }
 else
  {
  // Login not successful
  die("Gelieve de juiste login informatie in te geven aub.");
  }
 }
else
 {
 ?>
 <form action="?pagina=Login&amp;op=login" method="POST">
 <table>
  <tr>
   <td>Gebruikersnaam: </td>
   <td><input name="username"></td>
  </tr>
  <tr>
   <td>Wachtwoord: </td>
   <td><input type="password" name="password"></td>
  </tr>
  <tr>
   <td></td>
   <td><input type="submit" value="Login"></td>
  </tr>
 </table>
 </form>
 <?php
 }
 mysql_close($con);
?>

Registratie.php
PHP:
<?php
$con    = mysql_connect('localhost','***','***') or die(mysql_error());
mysql_select_db('***',$con);

//Input vaildation and the dbase code
if ( $_GET["op"] == "reg" )
 {
 $bInputFlag = false;
 foreach ( $_POST as $field )
  {
  if ($field == "")
   {
   $bInputFlag = false;
   }
  else
   {
   $bInputFlag = true;
   }
  }
 // If we had problems with the input, exit with error
 if ($bInputFlag == false)
  {
  die( "Er is een probleem opgetreden met uw ingevoerde gegevens. "
   ."Gelieve terug te keren en opnieuw te proberen.");
  }

 // Fields are clear, add user to database
 //  Setup query
 $q = "INSERT INTO `login` (`username`,`password`,`email`) "
  ."VALUES ('".$_POST["username"]."', "
  ."PASSWORD('".$_POST["password"]."'), "
  ."'".$_POST["email"]."')";
 //  Run query
 $r = mysql_query($q);

 // Make sure query inserted user successfully
 if ( !mysql_insert_id() )
  {
  die("Error: Gebruiker niet toegevoegd.");
  }
 else
  {
  // Redirect to thank you page.
  $host  = $_SERVER['HTTP_HOST'];
  $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
  $extra = "/index.php?pagina=Registratie&op=thanks";
  echo ("<script>document.location.href='http://".$host.$uri.$extra."'</script>");
  }
 } // end if


//The thank you page
elseif ( $_GET["op"] == "thanks" )
 {
 echo "Bedankt voor uw registratie.";
 }

//The web form for input ability
else {
  ?>
 <form action="?pagina=Registratie&amp;op=reg" method="POST">
 <table>
  <tr>
   <td>Gebruikersnaam: </td>
   <td><input name="username"></td>
  </tr>
  <tr>
   <td>Wachtwoord: </td>
   <td><input type="password" name="password"></td>
  </tr>
  <tr>
   <td>E-mailadres: </td>
   <td><input name="email" /></td>
  </tr>
  <tr>
   <td></td>
   <td><input type="submit" value="Registreren"></td>
  </tr>
 </table>
 </form>
 <?php
 }
 mysql_close($con);
// EOF
?>

Brock

Legacy Member
cpy paste van een inlogfunctieje van oud project:

PHP:
function login($Username, $Password)
	{
	    global $config_table_prefix;
		
		$Username = addslashes($Username);
		$Password = addslashes($Password);

		$query0 = "SELECT * FROM " . $config_table_prefix . "users WHERE Username='" . $Username . "'";
		$result0 = mysql_query($query0) or die("error in sql code");
		$row0 = mysql_fetch_object($result0);
		
		$SaltedPass = md5($Password);
	    
	    $query = "SELECT * FROM " . $config_table_prefix . "users WHERE Username='" . $Username . "' AND Password='" . $SaltedPass . "'";
	    //$query = "SELECT * FROM Docenten";
		$result = mysql_query($query) or die("BroQUser: Error logging in ... ");

	    if(mysql_num_rows($result) > 0)
	    {
	        $bu_username = strtolower($Username);
			session_register("bu_username");
			$_SESSION['bu_username'] = stripslashes($Username);
	    }
	}

wxphe

Legacy Member
if ( $obj = mysql_fetch_object($r) )

Dit is volgens mij verkeerd (i"m not a pro), moet je hier niet werken met een while loop?

greetz wxphe

wxphe

Legacy Member
Werkt dit ?

PHP:
<?php
session_start();
$con    = mysql_connect('localhost','***','***') or die(mysql_error());
mysql_select_db('***',$con);

if (isset($_POST["submit"]))
{
	if (!$_POST["username"] || !$_POST["password"])
	  {
  		die("U moet een gebruikersnaam en wachtwoord ingeven.");
  	  }else
	  { 
		// Run query
		$qry_usercheck = mysql_query("SELECT * FROM login 
	         						  WHERE username='".$_POST['username']."' 
	  								  AND password='PASSWORD('".$_POST['password']."')'
									  ");
		//Is er een overeenkomst of niet
		$result_usercheck=mysql_num_rows($qry_usercheck);
		if ($result_usercheck==1 )
  			{
  			// Login good, create session variables
	  		while ($obj=mysql_fetch_assoc($qry_usercheck))
	  			{
	  			$_SESSION["valid_id"] = $obj["id"]; //wist niet wat je hier wilde
	  			$_SESSION["valid_user"] = $obj["username"];
	  			$_SESSION["valid_time"] = time();
	  			}
 				// Redirect to member page
 				 Header("Location: index.php?pagina=Leden");
 				}
			}else
			{
  			// Login not successful
  			die("Gelieve de juiste login informatie in te geven aub.");
 			}
}else
{
?>
<form action="<? $_SERVER['PHP_SELF'] ?>" method="POST">
<table>
  <tr>
   <td>Gebruikersnaam: </td>
   <td><input name="username"></td>
  </tr>
  <tr>
   <td>Wachtwoord: </td>
   <td><input type="password" name="password"></td>
  </tr>
  <tr>
   <td></td>
   <td><input type="submit" value="Login"></td>
  </tr>
</table>
</form>
<?php
}
mysql_close($con);
?>

Joskevic

Legacy Member
sry nee, werkt niet, der zaten een paar kleine foutjes in, maar nu krijg ik de mysql error :
mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...

Andere oplossing?

wxphe

Legacy Member
Joskevic zei:
sry nee, werkt niet, der zaten een paar kleine foutjes in, maar nu krijg ik de mysql error :
mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...

Andere oplossing?

Voor ik mysql_num_rows doe, echo eens men query en post het resultaat hier.

Dus de rij voor mysql_num_rows:
echo "$qry_usercheck";

babbelut

Legacy Member
denk eerder: $result_usercheck nen echo van doen, twijfel sterk of die 1 geeft ook al ist allemaal juist ingevuld...

wxphe

Legacy Member
babbelut zei:
denk eerder: $result_usercheck nen echo van doen, twijfel sterk of die 1 geeft ook al ist allemaal juist ingevuld...


idd, bedoelde ik ook. Volgens mij zit het in de manier waarop hij de paswoorden opslaat. Waarom werken met paswoord('') ? Als je wilt gecodeert opslaan, verzin dan zelf niets en gebruik md5. En mocht paswoord()bestaan (weet ik dus niet). Dan moet je die bij het opslaan buiten de "" zetten. Want nu word die letterlijk opgeslagen.

greetz wxphe

Joskevic

Legacy Member
merci, kheb nu die password achterwege gelaten en met md5 geprobeerd, lukt nu wel
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan