Probleem met inlogsysteem

Status
Niet open voor verdere reacties.

ibowts

Gebruiker
Lid geworden
7 aug 2010
Berichten
50
Hallo, ik heb een inlogsysteem gemaakt voor mijn website(zie handtekening). Maar ik heb enkele problemen met het syteem.

1. Mijn register.php pagina werkt niet
2. Mijn beveiligde pagina geeft mij geen toestemming om de pagina te zien, ook al ben ik ingelogd

Wat wel al werkt is:

1.Connectie met database tijdens inloggen lukt.
2.Beveiligde pagina is effectief beveiligd


mijn systeem is gebouwd met de volgende bestanden:

Loginscript: main_login.php
PHP:
<form name="login" action="checklogin.php" method="post">
<div class="row"></div>
<div class="row"></div>
<table width="298" border="0">
  <tr>
    <td width="144" bgcolor="#000000" class="menuhorizontal">Gebruikersnaam</td>
    <td width="144"><span class="row">
      <input name="myusername" type="text" id="myusername" />
    </span></td>
  </tr>
  <tr>
    <td bgcolor="#000000" class="menuhorizontal">Wachtwoord</td>
    <td><input name="mypassword" type="password" id="mypassword" /></td>
  </tr>
</table>
<input type="submit" name="submit" value="Login" />
    </form>

Check pagina: checklogin.php (onderstaande script staat helemaal bovenaan, dus ook nog vóór DOCtype)
PHP:
<?php
$host="*********"; // Host name 
$username="*********"; // Mysql username 
$password="*********"; // Mysql password 
$db_name="*********"; // Database name 
$tbl_name="******"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection (more detail about MySQL injection)
$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);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {

}
?>

Succesvolle login: login_succes.php (staat ook vóór alles)
PHP:
<? 
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>

Register: register.php
PHP:
<?php include( 'checklogin.php' );

if(isset($_GET[ 'action']) && ($_GET['action'] == "register")){

   $username = $_POST['username'];
   $password = ($_POST['password'] . '90qdjka*@';
   
  // het formulier IS ingevuld
  $QUERY = "INSERT INTO members (`username`, `password`, `enabled`, `lastlogin`) VALUES ('" . $username . "', '" . $password . "', 1, NOW() )";


  if(mysqli_query( $QUERY )){

    die( 'Registratie was succesvol. Ga naar de <a href="main_login.php">loginpagina</a>!' );
  }
}

?>
      <br />
      <br />
<form action="register.php?action=register" method="post">
  Naam: <input name="username" maxlength="30" type="text" /><br />
Pass: <input type="password" name="password" maxlength="16" /><br />

<input type="submit" value="Registreer!" />
</form>

pagina beveiligen: sentry.php
PHP:
<?php

session_start();

if(!isset($_SESSION['username'])) die( 'U bent niet ingelogd!' );

$user = $_SESSION['username'];
$pass = $_SESSION['password'];


$QUERY = "SELECT username, password FROM members WHERE username = '" . $username . "' AND password = '" . $passname . "'";

$EXEC = mysqli_query( $QUERY );

if(mysqli_num_rows() < 1){
   
    unset($_SESSION['username'], $_SESSION['password']);
   die( 'U bent niet ingelogd!');
}

?>

Ten slotte: de beveiligde pagina's bevatten de volgende code
PHP:
<?php

include( 'sentry.php' );

?>


Mijn site bevat één beveiligde pagina om te testen: http://xtremecars.be/contact.php

Een voorbeeld van een geregistreerde gebruiker(handmatig toegevoegd aan database):
Username: user
Password: 123456


Ik hoop dat ik duidelijk ben

Wie weet wat er fout is gegaan?
 
Laatst bewerkt:
Het is ook geen algemene website vraag dus ik heb hem verplaatst naar de PHP-sectie :)
 
Hij stopt bij het bestand sentry.php. Dat is duidelijk

Maar in dit bestand kan hij stoppen op 2 plaatsen en je kan niet zeggen welke aangezien hij dan de zelfde output tekst weergeeft:

PHP:
<?php
 
session_start();
 
// Hier is de eerste mogelijkheid
if(!isset($_SESSION['username'])) die( 'U bent niet ingelogd!' );
 
$user = $_SESSION['username'];
$pass = $_SESSION['password'];
 
 
$QUERY = "SELECT username, password FROM members WHERE username = '" . $username . "' AND password = '" . $passname . "'";
 
$EXEC = mysqli_query( $QUERY );
 
if(mysqli_num_rows() < 1){
   
    unset($_SESSION['username'], $_SESSION['password']);
   // Hier is de tweede mogelijkheid
   die( 'U bent niet ingelogd!');
}
 
?>

Nu denk ik zelf dat het komt doordat je geen resultaat mee geeft aan mysqli_num_rows(). Dus probeer het volgende eens.

PHP:
<?php
 
session_start();
 
if(!isset($_SESSION['username'])) die( 'U bent niet ingelogd!' );
 
$user = $_SESSION['username'];
$pass = $_SESSION['password'];
 
 
$QUERY = "SELECT username, password FROM members WHERE username = '" . $username . "' AND password = '" . $passname . "'";
 
$EXEC = mysqli_query( $QUERY );
 
// Let op dat je hier wel de variable $EXEC mee geeft
if(mysqli_num_rows($EXEC) < 1){
   
    unset($_SESSION['username'], $_SESSION['password']);
   die( 'U bent niet ingelogd!');
}
 
?>

En daarnaast een goede tip om beide die() mogelijkheden verschillende teksten mee te geven zodat jij weet waar het fout gaat ;)


hoop dat dit je helpt,
groeten vreugde
 
Het is sowieso af te raden die() te gebruiken.

Nu stopt het script na die functie, een betere manier is fatsoenlijk een melding weer te geven in plaats van een stok tussen de tandwielen te zetten
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan