Archief - php: login script, sessie probleem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Erlend

Legacy Member
Haaj,

Ben even aan het prutsen geweest op een login script,scriptje werkt. Maar voor elke pagina moest je wachtwoord en user opnieuw ingeven, dus stopte ik éénmaal ingelogd het boeltje in een sessie. Ook dit werkt, alléén krijg ik enkele foutmeldingen, ik kijk er nu al eventjes op. Kan zijn dat het stom foutje is, of dat heel het script op niets trekt. Schiet mij dan niet af ... :) K'hoop hiermee wat conclusies te trekken uit mijn script, en de werkwijze die ik hanteer.

Script van pagina die beveiligd is :
PHP:
<?php
require_once('login_engine.php');
?>
<html>
<head>
	<title>Beveiligde Pagina</title>
	<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
Welkom op de beveiligde pagina. <a href="inhoud2.php">naar de tweede pagina doorgaan ?</a>
<br /><br /><br />
<?php
echo " Welkom <b>" . $gebruikersnaam . "</b>, u bent succesvol ingelogd";
?>
<br /><br /><br />
<br /><br /><br />
<a href="broncode.php?bestand=inhoud.php" target="_BLANK">Klik hier om de code te bekijken van deze module.</a><br />
</body>
</html>

Code van include die op beveiligde pagina gebeurt
PHP:
<?php
session_start();
if (isset($_POST['inloggen'])) {
	$gebruikersnaam = $_POST['gebruikersnaam'];
	$wachtwoord = $_POST['wachtwoord'];
	$gebruikersnaam = trim(strip_tags($gebruikersnaam));
	$wachtwoord = trim(strip_tags($wachtwoord));
} else {
	$gebruikersnaam = $_SESSION['s_gebruikersnaam'];
	$wachtwoord = $_SESSION['s_wachtwoord'];
}
		// Sql opstellen
		$sql  = "SELECT `voornaam`, `wachtwoord` FROM `test` ";
		$sql .= "WHERE `voornaam` = \"" . $gebruikersnaam . "\" ";
		$sql .= "AND `wachtwoord` = \"" . $wachtwoord . "\" ";
		// Databaseverbinding openen en query uitvoeren:
		require_once('mysql_connect.inc.php');
		$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die(mysql_error());
		mysql_select_db("familie") or die(mysql_error());
		$resultaat = mysql_query($sql) or die(mysql_error());
		if (mysql_num_rows($resultaat) == 1) {

			$record = mysql_fetch_assoc($resultaat);
			// Resultaatset vrijgeven en databaseverbinding sluiten:
			mysql_free_result($resultaat);
            mysql_close($verbinding);
			if (($record["voornaam"] != $gebruikersnaam) 
				or ($record["wachtwoord"] != $wachtwoord)) {
				inloggen($gebruikersnaam);
			} else {
				$_SESSION['s_gebruikersnaam'] = $gebruikersnaam;
				$_SESSION['s_wachtwoord'] = $wachtwoord;
            }
        } else {
            // Resultaatset vrijgeven en databaseverbinding sluiten:
            mysql_free_result($resultaat);
            mysql_close($verbinding);
            inloggen($gebruikersnaam);
        }
// Functie inloggen
function inloggen($gebruikersnaam = '')
{

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="nl">
<head>
	<title>Inloggen</title>
	<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<h3>Gelieve uw gebruikersnaam en wachtwoord in te vullen.</h3>
<table border="0" cellpadding="0px" cellspacing="0px">
<tr><td style="width:150px;">Gebruikersnaam :</td><td><input type="text" name="gebruikersnaam" size="25"></td></tr>
<tr><td>Wachtwoord :</td><td><input type="password" name="wachtwoord" size="25"></td></tr>
<tr><td colspan="2"><br /><input type="submit" name="inloggen" value="Inloggen"></td></tr>
</table>
<br />
<a href="index.php">Nog geen login-id ? Registreer hier</a><br />
<a href="broncode.php?bestand=login_engine.php" target="_BLANK">Klik hier om de code te bekijken van deze module.</a><br />
</form>
<?php
/*echo "Wachtwoord en gebruiker in de sessie<br />";
echo $log_gebruikersnaam . "<br />";
echo $log_wachtwoord . "<br />";
*/
?>
</body>
</html>
<?php
    exit;
}
?>

user: games.telenet
pass: telenet
Test - Script Hier

Alvast bedankt ... :)

Code edited na uitleg van killgore. Zie laatste post of voorbeeld voor huidige error.

killgore

Legacy Member
Sessie variabelen ALTIJD met $_SESSION['var'] aanspreken
zet (no matter if it's used) maar altijd session_start() bovenaan je script.

Dat 2° heeft een simpele reden:
Stel dat je sessie na 2 min. vervalt. Je site heeft 10 pagina's, 2 met session_start, 8 zonder (geen sessie info gebruikt). Nu, user X logged-in (sessie start) en surft vervolgens 5 min. lang op die 8 pages. Dan gaat hij terug naar 1van die 2 andere pages en merkt tot zen verbazing dat ie is uitgelogd.
2) Je hebt het niet enkel nodig om session vars te setten, maar ook om ze te gebruiken.

Erlend

Legacy Member
Eens inorde brengen en kijken wat het geeft, allesins al bedankt :)

Erlend

Legacy Member
Error na het inloggen, dus als je op de paginas komt die zijn beveiligd is weg.
Rest nog enkel de error die verschijnt als ik dien in te loggen. *Unsure*
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan