Webprofis is een Forum waarin je vragen kunt stellen die webgerelateerd zijn. Heb je vragen over of problemen met je Webpagina, HTML, CSS, Javascript, PHP of andere client of serverside scriptingtalen? Stel ze dan gerust op dit forum.
Op dit forum zijn een aantal vrijwilligers actief die u graag met uw vragen willen helpen en u waar mogelijk een passend antwoord aanbieden.
Hebt u zelf veel ervaring en kennis met betrekking tot het bovenstaande? U bent van harte welkom om uw kennis met anderen te delen!
We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.
Team Webprofis
We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.
Team Webprofis
Simpel Login
Een simpel login systeempje wat wel eens handig kan zijn als je een bepaald gedeelte, of meerdere gedeeltes, wilt afschermen.
Als eerste de index.php
define( 'USERNAME', 'admin' ); // Gebruikersnaam
define( 'PASSWORD', 'wachtwoord' ); // Wachtwoord
define( 'SAVE', true );
session_start();
$username = isset( $_SESSION['username'] ) ? $_SESSION['username'] : "";
$action = isset( $_GET['action'] ) ? $_GET['action'] : "";
if ( $action != "login" && $action != "logout" && !$username ) {
login();
exit;
}
switch ( $action ) {
case 'login':
login();
break;
case 'logout':
logout();
break;
default:
home();
}
function login() {
$results = array();
$results['title'] = "Login";
if ( isset( $_POST['login'] ) ) {
if ( $_POST['username'] == USERNAME && $_POST['password'] == PASSWORD ) {
$_SESSION['username'] = USERNAME;
header( "Location: index.php" );
} else {
$results['error'] = "Gebruikersnaam en Wachtwoord komen niet overeen of zijn onbekend!";
require( "login.php" );
}
} else {
require( "login.php" );
}
}
function logout() {
unset( $_SESSION['username'] );
header( "Location: index.php" );
}
function home() {
$results = array();
$results['title'] = "Home";
require( "home.php" );
}
De login.php (het weergegeven login form):
<!DOCTYPE html>
<html lang="nl" dir="ltr">
<head>
<meta charset="utf-8">
<title><?php echo $results['title']; ?></title>
</head>
<body>
<form action="index.php?action=login" method="post">
<input type="hidden" name="login" value="true">
<h2><?php echo $results['title']; ?></h2>
<?php if ( isset( $results['error'] ) ) { echo '<p>' . $results['error'] . '</p>'; } ?>
<input type="text" name="username" placeholder="Gebruikersnaam" required>
<input type="password" name="password" placeholder="Wachtwoord" required>
<button type="submit">Inloggen</button>
</form>
</body>
</html>
En de home.php (het afgeschermde gedeelte):
<?php if(!defined('SAVE')) die('Je kunt deze pagina niet direct laden.'); ?>
<!DOCTYPE html>
<html lang="nl" dir="ltr">
<head>
<meta charset="utf-8">
<title><?php echo $results['title']; ?></title>
</head>
<body>
<h2><?php echo $results['title']; ?></h2>
<p>Je bent bij deze ingelogd, klik <a href="index.php?action=logout">hier</a> om uit te loggen.</p>
</body>
</html>
Wil je meer gedeeltes afschermen bijvoorbeeld een fotoalbum, dan maak als eerste een kopie van de home.php en hernoem deze naar bijvoorbeeld fotoalbum.php
In de index.php plaats je een extra functie:
function fotoalbum() {
$results = array();
$results['title'] = "Fotoalbum";
require( "fotoalbum.php" );
}
En de switch aktie in de index.php ziet er dan als volgt uit:
switch ( $action ) {
case 'login':
login();
break;
case 'logout':
logout();
break;
case 'fotoalbum':
fotoalbum();
break;
default:
home();
}
Bovenstaande is voor een gebruiker, maar het is ook mogelijk voor meerdere gebruikers door middel van een database.
Deze aanpassing voor meerdere gebruikers en de database zitten niet in het zip bestand!
Als eerste maak een MySQL database aan en cre??er een tabel members, bijvoorbeeld:
CREATE TABLE IF NOT EXISTS `members` (
`id` smallint(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(100) NOT NULL DEFAULT '',
`password` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `members` (`id`, `username`, `password`) VALUES
(1, 'admin', 'admin'),
(2, 'webprofis', 'webprofis');
Verander dan deze regels in de index.php:
define( 'USERNAME', 'admin' ); // Gebruikersnaam
define( 'PASSWORD', 'wachtwoord' ); // Wachtwoord
Veranderen in: ( tevens vermeld je de gegevens van jou MySQL database )
define( 'DB_DSN', 'mysql:host=localhost;dbname=database' ); // Naam van de MySQL database
define( 'DB_USERNAME', 'database_gebruiker' ); // MySQL gebruikersnaam
define( 'DB_PASSWORD', 'gebruiker_wachtwoord' ); // MySQL gebruikers wachtwoord
Verander de login functie in de index.php in onderstaande:
function login() {
$results = array();
$results['title'] = "Login";
if ( isset( $_POST['login'] ) ) {
$username = trim( $_POST['username'] );
$password = trim( $_POST['password'] );
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sth = $conn->prepare("SELECT * FROM members WHERE username = ? AND password = ?");
$sth->bindParam(1, $username);
$sth->bindParam(2, $password);
$sth->execute();
if ($sth->rowCount() > 0) {
$_SESSION['username'] = $username;
header( "Location: index.php" );
} else {
$results['error'] = "Gebruikersnaam en Wachtwoord komen niet overeen of zijn onbekend!";
require( "login.php" );
}
$conn = null;
} else {
require( "login.php" );
}
}
Dit Topic is gesloten.