Sessies toevoegen aan inlog script

Status
Niet open voor verdere reacties.

gast0445

Gebruiker
Lid geworden
22 apr 2007
Berichten
97
Hallo mensen,
Ik heb dit script van iemand gekregen voor een afgeschermd gedeelte van mijn site en gebruik het al volop. Nou vraag ik me af hoe ik er sessies van kan maken zodat als ik even naar een andere pagina niet opnieuw hoef in te loggen. En dan ook een uitlog linkje erbij. (Graag zo veel mogelijk klaare codes aangezien ik nog niet volledig thuis ben in PHP).

Alvast bedankt voor jullie hulp!

PHP:
<?php
$username = "admin";
$password = "password";
if ($_POST['input_username'] != $username || $_POST['input_password'] != $password) {
?>
<!--LOGIN SCREEN-->
<HTML>
<FORM NAME="login" METHOD="post" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>">
<P>Username:<BR><INPUT TYPE="text" NAME="input_username"></P>
<P>Password:<BR><INPUT TYPE="password" NAME="input_password"></P>
<P><INPUT TYPE="submit" NAME="Submit" VALUE="Login"> <INPUT TYPE="Reset"></P>
</FORM>
</HTML>
<!--LOGIN SCREEN-->
<?php
}
else {
?>
<!--ACCESS SCREEN-->
<HTML>
PAGINA DIE TE ZIEN IS NA HET INLOGGEN
</HTML>
<!--ACCESS SCREEN-->
<?php
}
?>
 
Laatst bewerkt:
Ik heb hem even voor je aangepast.

login.php:

PHP:
<?php
session_start();

$username = "admin";
$password = "password";
if ($_POST['input_username'] != $username || $_POST['input_password'] != $password) {
?>
<!--LOGIN SCREEN-->
<HTML>
<FORM NAME="login" METHOD="post" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>">
<P>Username:<BR><INPUT TYPE="text" NAME="input_username"></P>
<P>Password:<BR><INPUT TYPE="password" NAME="input_password"></P>
<P><INPUT TYPE="submit" NAME="Submit" VALUE="Login"> <INPUT TYPE="Reset"></P>
</FORM>
</HTML>
<!--LOGIN SCREEN-->
<?php
}
else {
?>
<!--ACCESS SCREEN-->
<?php
session_register('username');

}
?>

beveiligd.php
PHP:
<?php
session_start();
if(isset($_SESSION['username'])) {?>
<HTML>
PAGINA DIE TE ZIEN IS NA HET INLOGGEN
</HTML>
<!--ACCESS SCREEN-->
<?php
}
?>

logout.php
PHP:
<?php
session_start();
session_unset('username');
session_destroy();
?>

Na het inloggen is beveiligd.php beschikbaar. Na logout.php niet meer.
Hopelijk kun je hier wat mee.
 
Ik krijg als ik op beveiligd.php uitkom een lege pagina te zien!
Enig idee hoe dit komt?

Overigens leek het me dat dit onderstaande vernadert moest worden:

HTML:
<FORM NAME="login" METHOD="post" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>">
HTML:
<FORM NAME="login" METHOD="post" ACTION="beveiligd.php">
 
Laatst bewerkt:
Dat komt omdat je dat niet had moeten veranderen. Het idee van RikXP's code is dat dezelfde pagina wordt geladen als je je gebruikersnaam en wachtwoord heb ingevoerd. Deze pagina maakt dan een sessie-variabele aan. "beveiligd.php" controleert of deze variabele bestaat. Als dat niet zo is krijg je niks te zien.
 
Je kunt wel een foutmelding programmeren, dat als de sessie niet bestaat, je een foutmelding te zien krijgt.

Zoiets:
PHP:
<?php
if(isset($_SESSION))
{?>
<!-- Je html code -->
<?php
}
else
{
echo "Je hebt geen rechten!!";
}
?>

Waarschijnlijk krijg je ook de foutmelding te zien met als titel Unknown.
Dit is een PHP bug. Mocht je deze niet te zien krijgen, dan is dat mooi megenomen.
 
Als ik de form action zo laat als hij is

Namelijk
PHP:
<FORM NAME="login" METHOD="post" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>">

Dan krijg ik na het inloggen DIT bericht
PHP:
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Maar hoe kan hij uberhaupt worden doorverwezen naar beveiligd.php aangezien deze koppelijk NERGENS gegeven word in de code van RikXP...?
 
Laatst bewerkt:
Waarschijnlijk krijg je ook de foutmelding te zien met als titel Unknown.
Dit is een PHP bug. Mocht je deze niet te zien krijgen, dan is dat mooi megenomen.

Je kunt dit oplossen door het volgende aan te passen:

In je login.php:
PHP:
session_register('username');
te veranderen in:
PHP:
$_SESSION['username'] = $username;

en om hem naar beveiligd.php te sturen:
PHP:
$_SESSION['username'] = $username;
echo "<script>window.location='beveiligd.php';</script>";
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan