Ik zou graag een login maken die in iedere site toepasbaar is;
het moet zo worden zoals je een Joomla template maakt, dat het door een include kan ingevoegd worden, en het moet flexibel zijn.
Nu ben ik bezig met mn database in te stellen, maar nu zit ik bij het probleem dat ik users, moderators, admins, superadmins wil
nu heb ik een tabel authorization, maar ik denk dat naar veiligheid toe die auth niet zomaar kan meegezonden worden op de manier van: ... .php?authorization=1
mn passwords worden met MD5 ge-encript, maar voor zoiets als ik wil is 32 tekens toch wel te lang.
Mijn vraag is: welke functie moet ik gebruiken om leden op een veilige manier een auth. mee te geven zodat er bepaalde delen per pagina extra worden geïnclude?
<?php
class MyDB {
protected $dbh; //connection
protected $query; //query result
public function db_connect() {
$this -> dbh = mysql_connect(HOST, USERNAME, PASSWORD) or die(mysql_error());
mysql_selest_db(DATABASE) or die(mysql_error());
return "nice!";
}
public function db_close() {
mysql_close($this->dbh);
}
}
?>
komt er weer een fout:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in
Wat doe ik nu weer verkeerd?
Het keyword public mag alleen binnen een class voorkomen.
Dit staat in een klas...
maar laat ook maar... Ik heb een scriptje gevonden op het internet maar op de een of andere manier werkt het niet zoals ik het wil, als je nu probeert in te loggen op http://www.onlinetutorials.be dan keert het login-formpje gewoon terug
login.php:
<?
class login {
var $ingelogd;
/*login functie*/
function login() {
$this->ingelogd = false; //default uitgelogd
session_start(); //start een sessie
if(isset($_POST['loguit'])) $this->loguit();
elseif(isset($_SESSION['count'])&&isset($_SESSION['user_ID'])&&isset($_SESSION['username'])) {
$_SESSION['count']++; //als sessie al bestaat, tel aantal pagina's +1
$this->ingelogd = true; //ingelogd
}
elseif(isset($_COOKIE['user_ID'])&&isset($_COOKIE['pass_hash'])) {
$sql = "id = ".(int)$_COOKIE['user_ID']." AND password = '".addslashes($_COOKIE['pass_hash'])."'";
$controle = $this->controleer_paswoord($sql);
$this->ingelogd = $controle;
}
if(isset($_POST['username'])&&isset($_POST['password'])&&!$this->ingelogd) { //geen elseif, wordt dan sobieso uitgevoerd, ook als je last hebt met verkeerde info in cookies en via form wilt inloggen
$sql = "username = '".addslashes($_POST['username'])."' AND password = '".md5(addslashes($_POST['password']))."'";
$controle = $this->controleer_paswoord($sql);
$this->ingelogd = $controle;
}
if($this->ingelogd) {
setcookie ("user_ID",$_SESSION['member_id'],time() + 3600*24*30,'/','http://www.onlinetutorials.be');
setcookie ("pass_hash",md5($_POST['pass']),time() + 3600*24*30,'/','http://www.onlinetutorials.be');
}
}
/*controleert het wachtwoord*/
function controleer_paswoord($sql2) {
require('db_connect.php'); //script voor databaseconnect ( mysql_connect en mysql_select_db)
$sql = "SELECT username,user_ID FROM user WHERE ".$sql2; //nu volledige query
$result = mysql_query($sql) or die (mysql_error());
if($row = mysql_fetch_object($result)) {
$_SESSION['count']=1;
$_SESSION['user_ID']=$row->user_ID;
$_SESSION['username']=$row->username;
return true; //ingelogd
}
else return false; //niet ingelogd
}//end function
function is_ingelogd() {
return $this->ingelogd;
}//end function
function get_output() {
if($this->is_ingelogd) return 'U bent ingelogd!';
else include ('includes/login/login_form.php');
}//end function
function loguit() {
session_unset();
session_destroy();
setcookie ("user_ID", "", time() - 3600,"/", "jouw_domein.be");
setcookie ("pass_hash", "", time() - 3600,"/", "jouw_domein.be");
$this->ingelogd = false;
} //end function
}//end class
$bezoeker = new login();
?>