Welkom gast! Aanmelden Registreren


Waardering:
  • 0 stemmen - gemiddelde waardering is 0
  • 1
  • 2
  • 3
  • 4
  • 5
Hoe maak je een log-in script?
#1

Hallo wezens hier op aarde,

Deze tutorial heeft als niveau : “2 Ervaren Beginner”.

In deze tutorial ga ik uitleggen hoe je een login systeem maakt door middel van de gebruiker en zijn wachtwoord te controleren in een SQL DB.



Vereisten:

- Basis kennis van PHP.
- Basis kennis van SQL.
- Enige HTML kennis.
- Common sence.
- Textverwerking software (Notepad / Textedit)



Optioneel:
-Een (locale) server die PHP ondersteunt (Persoonlijke Voorkeur : Alleen geregistreerde leden kunnen deze link zien. Registreer of log in om te bekijken. )
-Notepad ++ en Adobe Dreamweaver (om makkelijk een formulier te maken.)


Oké, laten we aan de slag gaan.

Open Notepad++ en dreamweaver.
Als eerste gaan we een login pagina maken.
Wij maken deze oefening in 2 pagina’s (login.php en login_verwerk.php).
Het is echter ook mogelijk om deze in 1 pagina te maken , maar dat is voor later!

Als eerste maken we een formulier in dreamweaver met 2 textboxes en een button.

PHP-code:
<form id="form1" name="form1" method="post" action="login_verwerk.php">
  <
p>
    <
label for="username">Username : </label>
    <
input type="text" name="username" id="username" />
  </
p>
  <
p>
    <
label for="password">Wachtwoord : </label>
    <
input type="text" name="password" id="password" />
  </
p>
  <
p>
    <
input type="submit" name="loginknop" id="loginknop" value="Login" />
  </
p>
</
form

Dit ziet er dus zo uit:
Spoiler (Weergeven)

Zoals je ziet , is de methode van het formulier POST en de action is login_verwerk.php
Dit zorgt ervoor dat als we op de knop drukken, de informatie word verzonden naar login_verwerk.php

Dan gaan we naar login_verwerk.
Als eerste openen we de php tags , doen we een require voor het connectie script, en vragen we de gegevens op via $_POST.

PHP-code:
<?php

Require ÃƒÂ¢Ã¢â€šÂ¬Ã…“connection.php”
$username 
$_POST[‘username’];
$password $_POST[‘password];
?>

Nu gaan we de opdracht schrijven en het resultaat van die opdracht opvragen :
(Ik ga er van uit dat je al een tabel in je database hebt staan met minstens 1 record van login gegevens. In dit voorbeeld heet de tabel login_tabel)

PHP-code:
$opdracht ÃƒÂ¢Ã¢â€šÂ¬Ã…“SELECT FROM login_tabel WHERE username‘$username’ and password=’$password’ ÃƒÂ¢Ã¢â€šÂ¬Ã‚;
$result mysql_query($opdracht); 

Als het goed is krijg je nu van de database 1 record terug!
Dit gaan we controleren met mysql_num_rows.

PHP-code:
$check mysql_num_rows($result); 

Als de inlog is geslaagd dan staat er nu in check $check = 1.
Zo niet dan is check 0.

Dat gaan we controleren met een if statement.

PHP-code:
If ($check == 1)
{
Echo 
“U bent nu ingelogt!”;
// Cookie of session aanmaken.
}
Else
{
Echo 
“Het inloggen is niet gelukt probeer het nog eens.”;
Echo 
“<a href=”login.php”>klik hier om het nog eens te proberen</a>”;


Het eindresultaat:

PHP-code:
<?php

Require ÃƒÂ¢Ã¢â€šÂ¬Ã…“connection.php”
$username 
$_POST[‘username’];
$password $_POST[‘password];

$opdracht ÃƒÂ¢Ã¢â€šÂ¬Ã…“SELECT FROM login_tabel WHERE username‘$username’ and password=’$password’ ÃƒÂ¢Ã¢â€šÂ¬Ã‚;
$result mysql_query($opdracht);

$check mysql_num_rows($result);

If (
$check == 1)
{
Echo 
“U bent nu ingelogt!”;
// Cookie of session aanmaken.
}
Else
{
Echo 
“Het inloggen is niet gelukt probeer het nog eens.”;
Echo 
“<a href=”login.php”>klik hier om het nog eens te proberen</a>”;
}

?>


Dit was mijn tutorial.
Ik heb dat jullie er iets van opgestoken hebben.

Goodbye,

Chris
 
#2
Mooie tutorial voor onze beginners!
Past is a word with a meaning
 
#3

Heel mooi gemaakt, erg overzichtelijk en handig! Bedankt Happysmile

 
#4
(10-11-2012, 22:46)Teun schreef: Heel mooi gemaakt, erg overzichtelijk en handig! Bedankt Happysmile

Geen dank collega!
 
#5
Dankuwel mede globale moderator!
 
#6
PHP-code:
<?php

Require ÃƒÂ¢Ã¢â€šÂ¬Ã…“connection.php”
$username 
$_POST[‘username’];
$password $_POST[‘password];

$opdracht ÃƒÂ¢Ã¢â€šÂ¬Ã…“SELECT FROM login_tabel WHERE username‘$username’ and password=’$password’ ÃƒÂ¢Ã¢â€šÂ¬Ã‚;
?>

De verstuurde gegevens van deze gebruiker komen dus in je variable "username".

Vervolgens wordt deze variable in de query gestopt. Dit heeft als risico dat een kwaadwillende extra sql queries mee kan geven, met als eindresultaat een SQL injectie.

Dit kun je simpel voorkomen door de mysql_real_escape_string van PHP te gebruiken.

PHP-code:
<?
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
?>


Verder mooie tutorial, bedankt voor het plaatsenHappysmile
 
#7
(12-11-2012, 18:29)Snorlax schreef:
PHP-code:
<?php

Require ÃƒÂ¢Ã¢â€šÂ¬Ã…“connection.php”
$username 
$_POST[‘username’];
$password $_POST[‘password];

$opdracht ÃƒÂ¢Ã¢â€šÂ¬Ã…“SELECT FROM login_tabel WHERE username‘$username’ and password=’$password’ ÃƒÂ¢Ã¢â€šÂ¬Ã‚;
?>

De verstuurde gegevens van deze gebruiker komen dus in je variable "username".

Vervolgens wordt deze variable in de query gestopt. Dit heeft als risico dat een kwaadwillende extra sql queries mee kan geven, met als eindresultaat een SQL injectie.

Dit kun je simpel voorkomen door de mysql_real_escape_string van PHP te gebruiken.

PHP-code:
<?
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
?>


Verder mooie tutorial, bedankt voor het plaatsenHappysmile

Wat dacht je van XSS/SSI.. tenzij je mysqli prepared statements gebruikt kun je het beter zo doen:

PHP-code:
function FilterData($data)
{
return 
mysql_real_escape_string(htmlspecialchars(stripslashes(strip_tags($data))));

 
#8
XSS filteren tijdens het invoeren van de gegevens is volgens velen de verkeerde manier. Effectiever is het filteren van de output.

Verder MySQLi, kun je ook PDO gebruiken, stukje sneller en netter.
 
#9
Beetje irritannt want ik ken niets van MySQL en kan geen databases opstellen
Alleen geregistreerde leden kunnen deze link zien. Registreer of log in om te bekijken.
 
  




Leden die dit momenteel bekijken: 1 gast(en)