Session_register

Status
Niet open voor verdere reacties.

rikietje

Gebruiker
Lid geworden
17 nov 2010
Berichten
154
Na uren, zweten en nog net geen tranen. Went ik me maar weer tot de jongens ( en meisjes) van helpmij.

Ik wil een login script maken voor mijn website.

Ik laat zien wat ik heb

Form :

PHP:
<div class='process_login.php'><form name='loginform' action='process_login.php' method ='POST' >
Gebruikersnaam <input type='text' name='username' id='username' />
 Wachtwoord <input type='password' name='password' id='password' />
 <input type='submit' name='submit' value='login' />
 </form></div>

process_login pagina :

PHP:
<html>
<head>
<title>test</title>
</head>
<body>
<?php 

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

$username =  $_POST['username'];

$password = $_POST['password'];




require ("require_connect_database.php");

 
$result= mysql_query("SELECT * FROM members  WHERE name = '$username' and password = '$password'") or die(mysql_error()); 




$rowCheck = mysql_num_rows($result); 
if($rowCheck > 0){ 
while($row = mysql_fetch_array($result)){ 

  //start the session and register a variable 

  session_start(); 
  session_register('username'); 	

  //successful login code will go here... 
  echo 'Success!'; 

  //we will redirect the user to another page where we will make sure they're logged in 
  header( "Location: checkLogin.php" ); 

  } 

  } 
else{
echo "FAIL" .$_POST['username']  ;
echo $_POST['password'];
}
}


?>
</body>
</html>

de CheckLogin pagina :

PHP:
<html>
<head>
<title>test</title>
</head>
<body>
<?php 

//start the session 
session_start(); 

//check to make sure the session variable is registered 
if(session_is_registered('username')){ 

//the session variable is registered, the user is allowed to see anything that follows 

echo 'Welcome, you are still logged in.'; 

} 
else{ 

//the session variable isn't registered, send them back to the login page 
header( "Location: index.php" ); 
} 

?> 
</body>
</html>

Wanneer het form is ingevuld wordt de gebruiker doorverwezen naar process_login.php
Vervolgens wordt hier gekeken of de gebruiker wel of niet de juiste gebruikersnaam en wachtwoord heeft.

Let niet op mijn beveiliging. Ik wil eerst dat het script werkt. (Ja ik weet de gevaren van MySQL injection).

Als de username en wachtwoord kloppen worden deze in de sessie geregistreerd. (als het goed is ??)

Vervolgens wordt je doorgestuurd naar checklogin.php

(TOT HIER GAAT HET GOED)

Maar dan wordt de session_register niet herkend.

Wat gaat er mis?

Alvast bedankt!
 
Laatst bewerkt:
wat me nu zo-even opvalt is dat je zowel in process_login als checklogin de session_start() aan roept, maar daar voor al output hebt gestuurd (de html tags). volgens de php.net manual werkt het dan niet (goed).
dit zelfde geld voor de header('...'); die je gebruikt.
beide kun je oplossen door ob_start(); helemaal boven aan je script te zetten (op elke pagina) nog voor elke output, dus zelf geen spatie (heel belangrijk)

verder nog:
session_is_registered('username') is deprecated (zie php.net) gebruik liever isset($_SESSION['username']).
ook session_register('username') is deprecated (zie php.net) gebruik liever $_SESSION["username"] = $username;

heb je de waarschuwingen wel aan staan? (dat doe je door error_reporting(E_ALL); helemaal aan het begin te zetten)

met vriendelijke groet,
Ecross
 
Laatst bewerkt:
wat me nu zo-even opvalt is dat je zowel in process_login als checklogin de session_start() aan roept, maar daar voor al output hebt gestuurd (de html tags). volgens de php.net manual werkt het dan niet (goed).
dit zelfde geld voor de header('...'); die je gebruikt.
beide kun je oplossen door ob_start(); helemaal boven aan je script te zetten (op elke pagina) nog voor elke output, dus zelf geen spatie (heel belangrijk)

verder nog:
session_is_registered('username') is deprecated (zie php.net) gebruik liever isset($_SESSION['username']).
ook session_register('username') is deprecated (zie php.net) gebruik liever $_SESSION["username"] = $username;

heb je de waarschuwingen wel aan staan? (dat doe je door error_reporting(E_ALL); helemaal aan het begin te zetten)

met vriendelijke groet,
Ecross

Hartelijk bedankt,

Het probleem was dat de sessies "deprecated" waren.

Bedankt voor de oplossing
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan