geen sessies aangemaakt...
hallo, ik heb laatst een topic gemaakt met de vraag of het gebruik van sessies wel veilig is voor een loginscript, er was verteld dat het wel veilig was als je het koppelt aan het ip-adres, dit heb ik geprobeerd maar bij het inloggen wil hij geen sessies onthouden.
dit is het loginscript:
dit is het loginscript:
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
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
<?
if($_SERVER['REQUEST_METHOD'] == "POST"){
// alles ingevult?
if(empty($_POST["usrname"])){
header("Location:index.php");
}
if(empty($_POST["pass"])){
header("Location:index.php");
}
// alles ingevult kijken of username bestaad.
if(!empty($_POST["usrname"]) && !empty($_POST["pass"])){
$name = mysql_query("SELECT usrname FROM soc_users WHERE usrname='".$_POST["usrname"]."'");
$nameck = mysql_num_rows($name);
if($nameck == 0){
header("Location:index.php");
}
if($nameck == 1){
$pass = mysql_query("SELECT * FROM soc_users WHERE usrname='".$_POST["usrname"]."'");
$passo = mysql_fetch_assoc($pass);
$spass = md5($_POST["pass"]);
if($passo["pass"] == $spass){
$_SESSION["soc_usr_name"] == $passo["usrname"];
$_SESSION["soc_usr_ip"] == $_SERVER['REMOTE_ADDR'];
header("Location:http://game.kooistrawebdesign.nl/game/");
}
else{
header("Location:index.php");
}
}
}
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST"){
// alles ingevult?
if(empty($_POST["usrname"])){
header("Location:index.php");
}
if(empty($_POST["pass"])){
header("Location:index.php");
}
// alles ingevult kijken of username bestaad.
if(!empty($_POST["usrname"]) && !empty($_POST["pass"])){
$name = mysql_query("SELECT usrname FROM soc_users WHERE usrname='".$_POST["usrname"]."'");
$nameck = mysql_num_rows($name);
if($nameck == 0){
header("Location:index.php");
}
if($nameck == 1){
$pass = mysql_query("SELECT * FROM soc_users WHERE usrname='".$_POST["usrname"]."'");
$passo = mysql_fetch_assoc($pass);
$spass = md5($_POST["pass"]);
if($passo["pass"] == $spass){
$_SESSION["soc_usr_name"] == $passo["usrname"];
$_SESSION["soc_usr_ip"] == $_SERVER['REMOTE_ADDR'];
header("Location:http://game.kooistrawebdesign.nl/game/");
}
else{
header("Location:index.php");
}
}
}
}
?>
Waarom twee maal een query?
1 keer is meer dan genoeg toch?
SELECT * FROM users where username = addslashes($_POST['username']) AND password = md5($_POST['password'])
Dan wordt je hele script al een stuk simpeler
1 keer is meer dan genoeg toch?
SELECT * FROM users where username = addslashes($_POST['username']) AND password = md5($_POST['password'])
Dan wordt je hele script al een stuk simpeler
Als hij de sessies niet wil onhouden moet je ff gaan zoeken of er al een $variable bestaat die deze zelfde naam heeft als de sessie zo ja dan word het over genomen en dan doet hij het niet.
de regel session_start () moet als eerste in je script staan. Daarna pas de require doen.
Gewijzigd op 29/08/2005 13:45:00 door Jan Koehoorn
ik heb het script vereenvoudigd zoals Jelmer dat aangaf.
voor zover ik kan zien is er (nu) geen variable die dezelfde naam heeft als de sessie, en heb session_start() bovenaan staan.
Het nieuwe script:
hij maakt de sessie nog steeds niet aan, maar ik vraag me af of het misschien ook aan het check-script kan liggen:
want bovenstaand script werkt wel als ik deze niet include.
bovenaan de pagina's waar deze op geïncluded wordt staat session_start();
voor zover ik kan zien is er (nu) geen variable die dezelfde naam heeft als de sessie, en heb session_start() bovenaan staan.
Het nieuwe script:
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
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
<?
session_start();
ob_start();
require("includes/database.php");
if($_SERVER['REQUEST_METHOD'] == "POST"){
// alles ingevult?
if(empty($_POST["usrname"])){
header("Location:index.php");
}
if(empty($_POST["pass"])){
header("Location:index.php");
}
// alles ingevult kijken of username bestaad.
if(!empty($_POST["usrname"]) && !empty($_POST["pass"])){
$query = mysql_query("SELECT * FROM soc_users WHERE usrname='".$_POST["usrname"]."' AND pass='".md5($_POST["pass"])."'");
if(mysql_num_rows($query) == "0"){
header("Location:index.php");
}
if(mysql_num_rows($query) == "1"){
$_SESSION["soc_usr_name"] == $_POST["usrname"];
$_SESSION["soc_usr_ip"] == $_SERVER['REMOTE_ADDR'];
header("Location:http://game.kooistrawebdesign.nl/game");
}
else{
header("Location:index.php");
}
}
}
?>
session_start();
ob_start();
require("includes/database.php");
if($_SERVER['REQUEST_METHOD'] == "POST"){
// alles ingevult?
if(empty($_POST["usrname"])){
header("Location:index.php");
}
if(empty($_POST["pass"])){
header("Location:index.php");
}
// alles ingevult kijken of username bestaad.
if(!empty($_POST["usrname"]) && !empty($_POST["pass"])){
$query = mysql_query("SELECT * FROM soc_users WHERE usrname='".$_POST["usrname"]."' AND pass='".md5($_POST["pass"])."'");
if(mysql_num_rows($query) == "0"){
header("Location:index.php");
}
if(mysql_num_rows($query) == "1"){
$_SESSION["soc_usr_name"] == $_POST["usrname"];
$_SESSION["soc_usr_ip"] == $_SERVER['REMOTE_ADDR'];
header("Location:http://game.kooistrawebdesign.nl/game");
}
else{
header("Location:index.php");
}
}
}
?>
hij maakt de sessie nog steeds niet aan, maar ik vraag me af of het misschien ook aan het check-script kan liggen:
want bovenstaand script werkt wel als ik deze niet include.
Code (php)
bovenaan de pagina's waar deze op geïncluded wordt staat session_start();
Gewijzigd op 29/08/2005 14:35:00 door The Pope
Als de sessie niet bestaat of als het leeg is gaat hij naar de header dus in denk dat het komt doordat hij niet bestaat.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if(mysql_num_rows($query) == "0"){
header("Location:index.php");
}
if(mysql_num_rows($query) == "1"){
?>
if(mysql_num_rows($query) == "0"){
header("Location:index.php");
}
if(mysql_num_rows($query) == "1"){
?>
Het resultaat van mysql_num_rows is een integer en geen string. Haal de dubbele aanhalingstekens om die 0 en die 1 eens weg?
Volgens mij moet ob_start() nog boven session_start()
Dit kan ook korter:
if(empty($_POST["usrname"])){
header("Location:index.php");
}
if(empty($_POST["pass"])){
header("Location:index.php");
}
Namelijk:
if(empty($_POST["usrname"]) OR empty($_POST["pass"]))
{
header("Location:index.php");
}
if(empty($_POST["usrname"])){
header("Location:index.php");
}
if(empty($_POST["pass"])){
header("Location:index.php");
}
Namelijk:
if(empty($_POST["usrname"]) OR empty($_POST["pass"]))
{
header("Location:index.php");
}
Ik wist niet dat PHP ook OR kende? Dat is toch || ?
kan allebei Jan, je kan ook AND doen ipv &&




