hallo,
ik heb een formulier gemaak dat in een sql database een id, naam en wachtwoord zet (registratieformulier). Nu zou ik deze gegevens wille gebruike voor mijn login. hoe kan ik dat naam en wachtwoord gaan controleren ?
Je haalt de waarden (SELECT) van de registratie uit de tabel (WHERE naam = $_POST['naam']) en kijkt of die dezelfde zijn als wat de gebruiker in het loginformulier heeft ingevuld...
Dat is de basis... als je een échte login wilt zal je wat meer research moeten doen over sessies, cookies, timestamps, ...
Er staan trouwens genoeg kant en klare login-tutorials op het internet...
ok, ik ben nu dus alles stop voor stap aan het doen, maar vanaf het moment dat ik mijn $sql er in zet krijg ik een lege pagina ik heb nu volgende code:
<?php
include('connect.php');
// Controle of er op login is geklikt.
if(isset($_POST['submit']))
{
// Tellen hoeveel gebruikers er zijn met deze informatie (is mogelijk wel onveilig zonder controle op bepaalde tekens).
$UserCount = mysql_query("SELECT COUNT(id) FROM leden WHERE naam = '".$_POST['naam']."' AND password = '".$_POST['password']."'") or die (mysql_error());
if(mysql_result($UserCount, 0) == 1)
{ // Mocht er maar 1 user zijn met die informatie laat het volgende zien
$sql = mysql_query("SELECT naam, password FROM leden WHERE naam = '".$_POST['naam']."'") or die (mysql_error());
$row = mysql_fetch_assoc($sql);
echo $row['naam'].' bestaat';
}
else
{ // Is er geen gebruiker met die informatie, of zijn er meerdere laat dan dit zien.
echo 'Geen gebruiker gevonden.';
}
}
else
{
?>
<form method="POST" action="">
<input type="text" name="naam" /><br />
<input type="password" name="password" /><br />
<input type="submit" name="submit" value="Login" />
</form>
<?php
}
?>
<?php
include("connect.php");
if(isset($_POST['submit'])) //kijken of er op knopje geklikt werd
{
$naam = $_POST['naam'];
$pass = md5($_POST['password']); //als je het paswoord md5 't in de DB...
$query = mysql_query("SELECT naam, password FROM `leden` WHERE naam = ' " . $naam . " ' ") or die (mysql_error());
$control = mysql_fetch_assoc($query);
if($control['paswoord'] == $pass)
{
echo "ingelogd";
//ingelogd, sessies of cookies toestande gebruike
}
else
{
echo "foute invoer";
// fout, opnieuw....
}
}
<?php
include("connect.php");
if(isset($_POST['submit']))//kijken of er op knopje geklikt werd
{
$naam=$_POST['naam'];
$pass=md5($_POST['password']);//als je het paswoord md5 't in de DB...
$query=mysql_query("SELECT naam, password FROM `leden` WHERE naam = ' ".$naam." ' ") or die(mysql_error());
ik heb nu titjes zn script getest, als ik dus bij de controle zet dat bij ingelogd 'echo "succes"' en bij fout een andere boodschap zet, krijg ik in alle 2 de gevallen een lege pagina, is dit normaal?
Titjes, volgens mij heeft die genoeg aan dat van mij, als de gebruiker bestaat moeten de sessies / cookies geset worden, bij jouw werkt het gewoon op de zelfde manier.
Naast dat zit er in jouw script ook nog een fout in je query, je hebt namelijk:
naam = " . $naam . "
wat
naam = '". $naam ."'
hoort te zijn
Abbas - 22/11/2006 21:26 (laatste wijziging 22/11/2006 21:27)
<?php
include('connect.php');
// Controle of er op login is geklikt.
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// Tellen hoeveel gebruikers er zijn met deze informatie (is mogelijk wel onveilig zonder controle op bepaalde tekens).
$UserCount = mysql_query("SELECT COUNT(id) FROM `leden` WHERE naam = '".$_POST['naam']."' AND password = '".$_POST['password']."'") or die (mysql_error());
if(mysql_num_rows($UserCount) > 0)
{ // Mocht er maar 1 user zijn met die informatie laat het volgende zien
$sql = mysql_query("SELECT naam, password FROM `leden` WHERE naam = '".$_POST['naam']."'") or die (mysql_error());
$row = mysql_fetch_assoc($sql);
echo $row['naam'].' bestaat';
}
else
{ // Is er geen gebruiker met die informatie, of zijn er meerdere laat dan dit zien.
echo 'Geen gebruiker gevonden.';
}
}
else
{
?>
<form method="POST" action="">
<input type="text" name="naam" /><br />
<input type="password" name="password" /><br />
<input type="submit" name="submit" value="Login" />
</form>
<?php
}
?>
<?php
include('connect.php');
// Controle of er op login is geklikt.
if($_SERVER["REQUEST_METHOD"]=="POST")
{
// Tellen hoeveel gebruikers er zijn met deze informatie (is mogelijk wel onveilig zonder controle op bepaalde tekens).
$UserCount=mysql_query("SELECT COUNT(id) FROM `leden` WHERE naam = '".$_POST['naam']."' AND password = '".$_POST['password']."'") or die(mysql_error());
if(mysql_num_rows($UserCount) > 0) heb ik veranderd, maar na even testen blijkt het toch nog niet te werken Hij geeft telkens aan dat er 1 combinatie gevonden is, ook al klopt dit niet.