login maken
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?
iemand?
en dan op de pagina beveiligd.php:
En dan op iedere pagina dat opvragen en dan met een if
EDIT: op die manier van de vorge poster kun je toch gewoon beveiligd.php openen en dan ben je al klaar..:S
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
Weet iemand een goede tut zijn voor sessions? Het is voor php5 want deze die hier staat is van 2002 en voor php4?
je was 35 min te vroeg met bumpen :P
roderik schreef op 25.06.2007 19:24:
je was 35 min te vroeg met bumpen :P
lol :p
Ik ben nu bezig met een functie connect te maken, maar hij heeft een fout bij hetvolgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
define(HOST, '***');
define(USERNAME, '***');
define(PASSWORD, '***');
define(DATABASE, '***');
public function connect() {
$this -> dbh = mysql_connect(HOST, USERNAME, PASSWORD) or die(mysql_error());
mysql_selest_db(DATABASE) or die(mysql_error());
}
connect()
?>
define(HOST, '***');
define(USERNAME, '***');
define(PASSWORD, '***');
define(DATABASE, '***');
public function connect() {
$this -> dbh = mysql_connect(HOST, USERNAME, PASSWORD) or die(mysql_error());
mysql_selest_db(DATABASE) or die(mysql_error());
}
connect()
?>
Parse error: syntax error, unexpected T_PUBLIC in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/connect.php on line 14
is de fout
Gewijzigd op 01/01/1970 01:00:00 door reinhout
Haal dan wel even je login gegevens weg
reinhout schreef op 25.06.2007 21:39:
Parse error: syntax error, unexpected T_PUBLIC in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/connect.php on line 14
is de fout
is de fout
Draait host nog PHP4? Dan mag je het keyword public nog niet gebruiken.
vandaar...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
define(HOST, '***');
define(USERNAME, '***');
define(PASSWORD, '***');
define(DATABASE, '***');
public function connect() {
$this -> dbh = mysql_connect(HOST, USERNAME, PASSWORD) or die(mysql_error());
mysql_selest_db(DATABASE) or die(mysql_error());
}
connect()
?>
define(HOST, '***');
define(USERNAME, '***');
define(PASSWORD, '***');
define(DATABASE, '***');
public function connect() {
$this -> dbh = mysql_connect(HOST, USERNAME, PASSWORD) or die(mysql_error());
mysql_selest_db(DATABASE) or die(mysql_error());
}
connect()
?>
Parse error: syntax error, unexpected T_PUBLIC in /storage/mijndomein/users/070658/public/sites/www.onlinetutorials.be/connect.php on line 14
is de fout nog steeds, ook nu na het overschakelen naar php5...
een fout in het script?
Gewijzigd op 01/01/1970 01:00:00 door reinhout
Het keyword public mag alleen binnen een class voorkomen.
hoe moet ik het dan doen dat het werkt? Het is mij onduidelijk
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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);
}
}
?>
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?
Gewijzigd op 01/01/1970 01:00:00 door reinhout
Luister je wel je mag het woord public nog niet gebruiken dus niet: public function maar gewoon function gebruiken.
Jan Koehoorn schreef op 27.06.2007 15:12:
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?
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();
?>
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();
?>
Gewijzigd op 01/01/1970 01:00:00 door reinhout
Ik weet niet of het de oorzaak is, maar er staat wel een aantal fouten in dit script. Overal waar nu een enkele & staat, hoort && te staan.
heb ik aangepast, maar is nog steeds hetzelfde...