Goede avond,

Voor ons profielwerkstuk (Joyce en Ruben) zijn wij bezig met het programmeren van een website. Wij zijn bezig met een login-systeem met een verschil tussen een normale user en een administrator. Echter lukt het ons niet om een verschil te krijgen in users. Graag zouden wij willen dat we in de database (of via een script via de administrator) id=0 (normaal) kunnen veranderen naar id=1 (administrator). Maar hoe schrijven we dit in dit script?
Tips en links zijn ook welkom!

Groetjes Ruben en Joyce!

Register.php
<html>

<?php

//$submitbutton = $_GET['submit'];

if($_SERVER['REQUEST_METHOD'] == "POST")
{

ob_start();
$host="localhost";
$DB_username="....";
$DB_password="...";
$db_name="m6-biol";
$tbl_name="leden";

$connection = mysql_connect("$host", "$DB_username", "$DB_password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");


    $username   = $_POST['username'];
    $email  = $_POST['email'];
    $password   = $_POST['password'];

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address
    {
        $message =  "Wrong e-mail ";
    }

    $query = "SELECT email FROM leden WHERE email ='".$email."'";
    $result = mysql_query($query) or die (mysql_error());
    $numResults = mysql_num_rows($result);
    if($numResults>=1)
    {
        $message = $email." Email already exist";
    }
    else
    {
        mysql_query("insert into leden(username,email,password) values('".$username."','".$email."','".md5($password)."')") or die (mysql_error());;
        $message = "You are a member";
    }
    echo $message;
//  }
}
?>
<form action="" method="post">
    <p><input id="username" name="username" type="text" placeholder="Name"></p>
    <p><input id="email" name="email" type="text" placeholder="Email"></p>
    <p><input id="password" name="password" type="password" placeholder="Password">
        <input name="action" type="hidden" value="signup" /></p>
    <p><input type="submit" value="Signup" name="submit" /></p>
 </form>

 </html> 


Controle.php
<?php
ob_start();
$host="localhost";
$DB_username="******";
$DB_password="******";
$db_name="m6-biol";
$tbl_name="leden";

$connection = mysql_connect("$host", "$DB_username", "$DB_password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$myusername=$_POST['username']; 
$mypassword=md5($_POST['password']); 

//$myusername = stripslashes($myusername);
//$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$count=($result ? mysql_num_rows($result) : 0);

if($count==1){
    session_register("myusername");
    session_register("mypassword"); 
    header("location:gelukt.php");
}
else {
echo "Wrong username or password\n";
}

ob_end_flush();

?>

Wat dacht je van een extra veld aanmaken met: 'level', waarbij je een 0 of 1 kan kiezen?

Trouwens zie ik enkele onvolkomenheden in het script, die je beter eerst even plat kan drukken:
- Vanaf lijn 21 kopieer je variabelen, wat nergens voor nodig is. Je kan de $_POST-variabeen direct gebruiken.
- Je gebruikt de functies van MySQL, welke verouderd zijn. Stap het liefst over op de functies van MySQLi of PDO.
- De waardes worden niet beveiligd tegen SQL-injection. Dus gebruik mysql_real_escape_string() of verdiep je in 'prepared statements'
- Variabelen horen niet tussen quotes (").
- md5() is behoorlijk achterhaald als bescherming van het wachtwoord. Gebruik bij voorkeur password_hash() met password_verify()
- Session_register() is al iets van 5 jaar verouderd. gebruik gewoon de $_SESSION-variabelen om data in op te slaan.

Reageren