Probleem bij maken inlog scherm

Status
Niet open voor verdere reacties.

evertVB

Gebruiker
Lid geworden
6 apr 2009
Berichten
570
Ik probeer een login fomulier te maken.

Als ik expres een onjuiste combinatie van username en password invoer, dan meldt hij netjes 'userid or password incorrect'.
Als ik de juiste combinatie invoer dan geeft hij geen foutmelding maar ik word ook niet ingelogd.
Als ik niets invoer geeft hij ook geen foutmelding maar ik word ook niet ingelogd.
Wat gaat er precies fout?

login.php:
PHP:
<?php
session_start();
require('../../../my_php_includes/dblink.php');
$username = $_POST['username'];
$password = $_POST['password'];

if ( $username == null || $password == null ) {
  $_SESSION['error_message'] = 'You must enter your username and password to proceed';
  header('Location: '.$_SERVER['HTTP_REFERER']);
  exit;
}

if (logon($username, $password)) {
  $_SESSION['user'] = $username;
  $_SESSION['error_message'] = 'logon successful!';
 
  header('Location: '.$_SERVER['HTTP_REFERER']);
  exit;
}
else {
  die( 'The userid or the password you entered is incorrect');
  $_SESSION['error_message'] = 'The userid or the password you entered is incorrect';
//  header('Location: '.$_SERVER['HTTP_REFERER']);
  exit;
}


function logon($username, $password)
{
    $query = "select * from WebUser where username='"
    ."$username"
    ."' and password = MD5('"
    ."$password"
    ."')";
//    echo $query;
    $result=mysql_query($query)
         or die("Fout bij uitvoeren select query.");

//    echo mysql_num_rows($result);
    if (mysql_num_rows($result) > 0)
        return 1;
    else
        return 0;
}


?>

<?php
require('../../../my_php_includes/dblink_close.php');
?>
 
Verander de null op regel 7 (2x) is door 2 enkele quotes. Dus zo: ''
zonder spatie of wat dan ook ertussen.
 
Dat heb ik zojuist geprobeerd, maar helaas had het geen effect.
 
Maak van je query eens het volgende:
Code:
    $query = "SELECT * FROM WebUser WHERE username='"
    . $username
    ."' AND password = '"
    . md5($password) . "'");
 
Heeft ook geen effect. De query was al goed want hij reageert correct na het opzettelijk invullen van een onjuist password.
 
Goed, dus je bedoeld dat de sessies niet worden onthouden, of het sessie id veranderd steeds wat resulteert in hetzelfde. Probeer je sessie waardes eens te echo-en op de volgende pagina.
 
Ik zou je graag willen helpen maar als ik niet weet wat de foutmelding is kan ik je niet helpen
 
Laatst bewerkt:
Goed, dus je bedoeld dat de sessies niet worden onthouden, of het sessie id veranderd steeds wat resulteert in hetzelfde.

Inderdaad de sessie werd niet onthouden.

Nu heb ik bovenaan mijn index.php toegevoegd:
PHP:
  session_start();

Nu onthoudt hij mijn sessie wel.:)


Ik houd nog één probleem over: als ik géén username en géén wachtwoord invoer, dan verwacht ik deze foutmelding:

PHP:
if ( $username == '' || $password == '' ) {
  $_SESSION['error_message'] = 'You must enter your username and password to proceed';
  header('Location: '.$_SERVER['HTTP_REFERER']);
  exit;
}

Maar dat gebeurt niet. Hij geeft geen enkele melding terug (maar logt mij ook niet in).:confused:
 
Iets anders je gebruikt geen
PHP:
mysql_real_escape_string
Dit zou ik gebruiken om sql injecties te voorkomen
 
Iets anders je gebruikt geen
PHP:
mysql_real_escape_string
Dit zou ik gebruiken om sql injecties te voorkomen

Dank voor de tip!

Inmiddels weet ik het antwoord op mijn vorige vraag. Ik vul weliswaar $_SESSION['error_message'], alleen daarna word ik terugverwezen naar index.php en daar moet ik hem dan wel ergens tonen.:o
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan