Hoi,

Ik ben niet goed in php (gebruik alleen bestaande scripts).
Ik heb volgend stuk code dat ik wil aanpassen naar meerdere users en passwords:

if (!isset($_SESSION['user'])) {
$user = '';
$pass = '';
if (isset($_POST['login'])) {
$user = strtolower(trim($_POST['user']));
$pass = $_POST['pass'];
$errors = array();
if ($user == '' || $user != 'admin') {
$errors['user'] = '';
}
if ($pass == '' || $pass != '123456') {
$errors['pass'] = '';
}
if (empty($errors)) {
$_SESSION['user'] = $user;


Kan iemand me zeggen hoe ik dit stuk code dan moet aanpassen?
Alvast bedankt hoor!

fvd
Liever zet je het tussen code -tags

<?php
if (!isset($_SESSION['user'])) {
$user = '';
$pass = '';
if (isset($_POST['login'])) {
$user = strtolower(trim($_POST['user']));
$pass = $_POST['pass'];
$errors = array();
if ($user == '' || $user != 'admin') { 
$errors['user'] = '';
}
if ($pass == '' || $pass != '123456') {
$errors['pass'] = '';
}
if (empty($errors)) {
$_SESSION['user'] = $user;
?>


En heb je al wel eens gehoord van inspringen?
Dus alles wat in een if staat, een tab er voor.

Dus zo ongeveer:

<?php
if (!isset($_SESSION['user'])) {
	$user = '';
	$pass = '';
	
	if (isset($_POST['login'])) {
		$user = strtolower(trim($_POST['user']));
		$pass = $_POST['pass'];
		$errors = array();
		
		if ($user == '' || $user != 'admin') { 
			$errors['user'] = '';
		}
		if ($pass == '' || $pass != '123456') {
			$errors['pass'] = '';
		}
		if (empty($errors)) {
			$_SESSION['user'] = $user;
		}
	}
}
?>
Beste Theodoor,

Dank je voor de correctie.
Het zou nog mooier zijn mocht iemand me kunnen helpen...

Groeten,
FVD
Misschien zou je wat meer van je code willen posten? Dat maakt het wat makkelijker;)
Stel je nu eens voor, je hebt een site, 100 mensen registreren zich per dag.
Voor iedere bezoeker komt er dus een stukje PHP code bij op je site.
Daarnaast zou je nog meer info van een bezoekers willen bijhouden (Email, geboortedatum, etc).

Ga je dit dat allemaal in je PHP code verwerken? Je hebt hopelijk wel wat beters te doen ;P

Je zult toch gebruik moeten maken van een database om gebruikers gegevens in op te slaan.
Met een SELECT query kun je dan controleren of login naam en wachtwoord in de database staan. Zorg er wel voor dan de combinatie login naam en wachwoord uniek is (unique index). Anders zou ik wel eens als Piet kunnen inloggen ik ben toch echt Martijn :D
Dit lijkt mij niet al te moeilijk als je een aantal tutorials doorleest.
Beste Martijn,

Het is slechts voor en paar mensen, wordt dus niet uitgebreid, max 5 of zo.

Hier is de hele code:
 
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>CMS</title>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="main">
<h1>CMS</h1>
<?php
if (empty($_POST) && isset($_GET['action'])) {
		$action = $_GET['action'];
		switch ($action) {
			case 'logout':
				session_unset();
				session_destroy();
				break;
	}
}
if (!isset($_SESSION['user'])) {
	$user = '';
	$pass = '';
	if (isset($_POST['login'])) {
		$user = strtolower(trim($_POST['user']));
		$pass = $_POST['pass'];
		$errors = array();
		if ($user == '' || $user != 'admin') {    
			$errors['user'] = '';
		}
		if ($pass == '' || $pass != '123456') {
			$errors['pass'] = '';
		}
		if (empty($errors)) {
			$_SESSION['user'] = $user;
		} else {
			echo '<p class="error">Please fill in your correct ';
			if (isset($errors['user']))
				echo 'username';
			if (count($errors) == 2)
				echo ' and ';
			if (isset($errors['pass']))
				echo 'password';
			echo '.</p>', "\n";
		}
	}
}
if (isset($_SESSION['user'])) {
	$user = $_SESSION['user'];
?>
<div id="headertext">
	<p class="l">You are logged in as <strong><?php echo $user?></strong>.</p>
	<p class="r"><a href="?action=logout">Logout</a></p>
</div>
<?php
	if (isset($_POST['edit'])) {
		if (file_put_contents('homecontent.txt', $_POST['homecontent']))
			echo '<p class="succes">Your changes are saved.</p>', "\n";
	}
	$homecontent = file_get_contents('homecontent.txt');
?>
<form method="post" action="">
	<p>Here you can edit your homepage text:</p>
	<textarea name="homecontent" id="homecontent" rows="20" cols="55"><?php echo $homecontent?></textarea>
	<p><button type="submit" name="edit">Save changes</button></p>
</form>
<?php } else {?>
<form method="post" action="" id="login">
	<p>
		<label for="user">Username:</label><input type="text" name="user" id="user" value="<?php echo $user?>" />
	</p>
	<p>
		<label for="pass">Password:</label><input type="password" name="pass" id="pass" value="<?php echo $pass?>" />
	</p>
	<p>
		<button type="submit" name="login">Login</button>
	</p>
</form>
<?php }?>
</div>
</body>
</html>

Zonder database zou je het zo kunnen doen:
<?php
session_start();

if (!isset($_SESSION['user'])) {
$user = '';
$pass = '';

if (isset($_POST['login'])) {
$user = strtolower(trim($_POST['user']));
$pass = $_POST['pass'];

$aUserLogin = array(
'piet1' => 'geheim1',
'piet2' => 'geheim2',
'piet3' => 'geheim3',
'piet4' => 'geheim4',
'piet5' => 'geheim5'
);


if( isset($aUserLogin[$user])
&& $aUserLogin[$user] == $pass )
{
// Login gegevens zijn goed
$_SESSION['user'] = $user;
}
else
{
// Login gegevens zijn fout
}
}
}

// Als gebruiker ingelogd is
if( isset($_SESSION['user']) )
{
//print_r($_SESSION['user']);
}

?>
Martijn,

Als ik dat zo doe krijg ik een "500 internal server error" :-(
Volgens mij had je al session_start() in je script staan haal die van mij er eens uit.

Deze functie moet namelijk als eerste worden uitgevoerd, dus voor dat je iets op het scherm zet. Anders krijg je problemen.
Hey Martijn,
Al beter zo ja, geen error meer, maar wel blanco pagina...
Als je regel 24 t/m 50 van jou code verwijderd en deze vervangt door mijn code (zonder die session_start() dan) zou het goed moeten gaan.

[edit]
Zet anders dit ook nog even bovenin je scrip (nog veel session_start())
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
?>

Als alles werkt van die 1 een 0 maken.

Reageren