Door
Stan Peters
op 21-11-2013 09:00
gewijzigd op 21-11-2013 14:59
1.857 views
Hallo,
Ik ben net begonnen met php en probeer een sessie te maken.
Ik heb al op veel sites gekeken maar het werkt gewoon niet.
Dit is mijn script:
<html>
<head>
<title>Opdracht 44 inloggen</title>
</head>
<body>
<?php
$gebruikersnaam = $_POST["gebruikersnaam"];
$wachtwoord = $_POST["wachtwoord"];
if (!$gebruikersnaam || !$wachtwoord)
{
?>
<p><b>Welkom! Maak een random gebruikersnaam en wachtwoord. Ze worden niet opgeslagen dus boeiend!</b></p>
<table border="0">
<form name="rekenmachine" method="post" action="Opdracht_44a.php">
<tr><td>Gebruikersnaam:</td>
<td><input type = "text" size="25" name = "gebruikersnaam"></td></tr>
<tr><td>Wachtwoord:</td>
<td><input type = "password" size="25" name = "wachtwoord"></td></tr>
<tr><td><input type = "submit" value = "Inloggen"></td></tr>
</form>
</table>
<?php
}
else
{
session_start();
$_SERVER['gebruikersnaam'];
echo "Klik hier om door te gaan $gebruikersnaam";
?>
<form name="jwz" method="post" action="Opdracht_44b.php">
<input type="submit" value="Naar geheime pagina...">
</form>
<?php
}
?>
</body>
</html>
Het 2e script is:
<html>
<head>
<title>Opdracht 44 geheim</title>
</head>
<body>
<?php
session_set_cookie_params(0, '/', 'stan.graafhuyncollege.nl');
session_start();
if ($_SERVER['gebruikersnaam'])
{
echo"Heey $gebruikersnaam! Welkom op de beveiligde pagina! <br />
Uw gebruikersnaam is $gebruikersnaam. <br />
En uw wachtwoord is $wachtwoord. <br />
U kunt zich hier afmelden: <br />";
}
else
{
echo"u bent niet ingelogd";
}
?>
<form name="jwz" method="post" action="Opdracht_44a.php">
<input type="submit" value="AFMELDEN <?php echo $gebruikersnaam; ?>">
</form>
</body>
</html>
Jammer genoeg werkt dit script niet.
Kan iemand mij misschien helpen?
Als je met session_set_cookie_params() het domein instelt op '.example.com' zal de cookie verstuurt worden voor elk subdomein van example.com. Als je het instelt op 'miauw.example.com' zal die cookie niet verstuurt naar bijvoorbeeld 'woef.example.com'.
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', '1');
$gebruikersnaam = $_POST["gebruikersnaam"];
$wachtwoord = $_POST["wachtwoord"];
if (!$gebruikersnaam || !$wachtwoord)
{
?>
<html>
<head>
<title>Opdracht 44 inloggen</title>
</head>
<body>
<p><b>Welkom! Maak een random gebruikersnaam en wachtwoord. Ze worden niet opgeslagen dus boeiend!</b></p>
<table border="0">
<form name="rekenmachine" method="post" action="Opdracht_44a.php">
<tr><td>Gebruikersnaam:</td>
<td><input type = "text" size="25" name = "gebruikersnaam"></td></tr>
<tr><td>Wachtwoord:</td>
<td><input type = "password" size="25" name = "wachtwoord"></td></tr>
<tr><td><input type = "submit" value = "Inloggen"></td></tr>
</form>
</table>
<?php
}
else
{
$_SESSION['gebruikersnaam'] = $gebruikersnaam;
echo "Klik hier om door te gaan $gebruikersnaam";
?>
<form name="jwz" method="post" action="Opdracht_44b.php">
<input type="submit" value="Naar geheime pagina...">
</form>
</body>
</html>
<?php
}
?>
En mijn 2e script is:
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', '1');
if ($_SESSION['gebruikersnaam'])
{
echo"Heey $gebruikersnaam! Welkom op de beveiligde pagina! <br />
Uw gebruikersnaam is $gebruikersnaam. <br />
En uw wachtwoord is $wachtwoord. <br />
U kunt zich hier afmelden: <br />";
}
else
{
echo"u bent niet ingelogd";
?>
<html>
<head>
<title>Opdracht 44 geheim</title>
</head>
<body>
<form name="jwz" method="post" action="Opdracht_44a.php">
<input type="submit" value="AFMELDEN <?php echo $gebruikersnaam; ?>">
</form>
</body>
</html>
<?php
}
?>
Script 2 :hij laat nu wel de if zien, maar de $gebruikersnaam doet het niet. Als ik in plaats van $gebruikersnaam, $_SESSION['gebruikersnaam'] neer zet, doet pagina 44b (2e script) het niet meer.
// eerst kijken of er een $_POST in de lucht hangt
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// hier controleer jij dus of de gegevens overeen komen met wat in de DB staat. Dit doe ik even niet
$_SESSION['gebruikersnaam'] = $_POST["gebruikersnaam"];
}
// kijken of de session variabelen gezet zijn
if (!isset($_SESSION['gebruikersnaam'])) {
// geen login in de sessie gevonden
// zie heredoc notation
echo <<<HTML
<html>
<head>
<title>Opdracht 44 inloggen</title>
</head>
<body>
<p><b>Welkom! Maak een random gebruikersnaam en wachtwoord. Ze worden niet opgeslagen, dus boeiend!</b></p>
<table border="0">
<form name="rekenmachine" method="post" action="">
<tr><td>Gebruikersnaam:</td>
<td><input type = "text" size="25" name = "gebruikersnaam"></td></tr>
<tr><td>Wachtwoord:</td>
<td><input type = "password" size="25" name = "wachtwoord"></td></tr>
<tr><td><input type = "submit" value = "Inloggen"></td></tr>
</form>
</table>
</body>
</html>
HTML;
}
else {
// login in de sessie gevonden
// Met andere woorden, vanaf hier kan je al de geheime pagina's tonen die je wil.
// laat me hier even een basis navigatie toevoegen, dus op basis van de URL
switch(isset($_GET['p']) ? $_GET['p'] : '') {
default:
echo <<<HTML
<a href="?p=welcome">Klik hier</a> om door te gaan, $_SESSION[gebruikersnaam]
<br><br><br><a href="?p=logout">Uitloggen</a>
HTML;
break;
case 'welcome':
echo 'Welkom op de geheime pagina van Stan. <br>Het doel van het leven is 42
<br><br><br><a href="?p=logout">Uitloggen</a>';
break;
case 'logout':
unset($_SESSION['gebruikersnaam']);
header('location: ?p=');
break;
}
}
?>