[PHP] Inlog script fout?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Dit inlog script schijnt het niet altijd te doen. Als er een nieuwere versie van MySQL op een server staat dan wil het nog wel eens dat je je naam en wachtwoord kan blijven typen maar er gebeurt verder nix.

Ik heb het zelf op 4 servers draaien en werkt prima, maar soms dus niet !

Dit staat op de index.php file waar een form in staat om in te loggen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
//sessie starten
session_start();
//connect met MySQL
mysql_connect ("localhost","user", "pass"); 
// Selecteer database 
mysql_select_db("database");
//check of alle velden zijn ingevuld...
if(isset($uloginname) && isset($upassword)) {
//results ui db halen
$result = mysql_query("SELECT * FROM login WHERE uloginname=\"$uloginname\" AND upassword=md5(\"$upassword\")");
//check of combo uloginname en upassword bestaat...
if(mysql_num_rows($result) > 0) {
//sessies aanmaken
$_SESSION["sa_loginname"] = $uloginname;
$_SESSION["sa_loggedin"] = 1;
//Linken naar de volgende pagina
header("location: adminconsole.php");
}
}
?>


En dit boven iedere pagina die beveiligd moet worden:
code:
1
2
3
4
5
6
7
<?php
//sessie starten
session_start();
//checken of sessies zijn aangemaakt...
if($_SESSION["sa_loggedin"] != 1)
    die();
?>


Passwords zitten tevens encrypted (MD5) in de database.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:51

Janoz

Moderator Devschuur®

!litemod

Lijkt me eerder een globals probleempje dan een mysql probleem. Probeer eens met $_GET en/of $_POST te werken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

deze zou ik persoonlijk ook wijzigen:
PHP:
1
if($_SESSION["sa_loggedin"] != 1)

naar
PHP:
1
if(!isset($_SESSION['sa_loggedin']) || $_SESSION['sa_loggedin'] != 1)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Hmm waarom is die tweede beter dan ?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ViNyL schreef op 17 november 2003 @ 10:23:
Hmm waarom is die tweede beter dan ?
Zet je error_reporting maar eens op E_ALL ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Je code netjes schrijven, o.a.:

PHP:
1
$result = mysql_query("SELECT * FROM login WHERE uloginname='" . $uloginname . "' AND upassword='" . md5($upassword) . "'");


..en even kijken of je wel gebruik kan maken van $_SESSION, $_POST en $_GET ipv respectievelijk $HTTP_SESSION_VARS, $HTTP_POST_VARS en $HTTP_GET_VARS.

Ik denk dat je dan al een heel eind komt?

Edit:
En af en toe een mysql_error() dingetje ertussen proppen?

[ Voor 20% gewijzigd door Verwijderd op 17-11-2003 11:50 ]


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
..en even kijken of je wel gebruik kan maken van $_SESSION, $_POST en $_GET ipv respectievelijk $HTTP_SESSION_VARS, $HTTP_POST_VARS en $HTTP_GET_VARS.
Dat zegt me niet heel veel. Maar zal het opzoeken.
Maar hoe bedoel je, kijken of je er gebruik van kan maken?

Acties:
  • 0 Henk 'm!

Verwijderd

ViNyL schreef op 17 november 2003 @ 13:05:
[...]
Dat zegt me niet heel veel. Maar zal het opzoeken.
Maar hoe bedoel je, kijken of je er gebruik van kan maken?
Alleen nieuwere versie van PHP (>= 4.1.0) kunnen overweg met $_SESSION, $_POST, $_GET. Bij oudere versie kan je alleen $HTTP_SESSION_VARS, $HTTP_POST_VARS en $HTTP_GET_VARS gebruiken.

Acties:
  • 0 Henk 'm!

Verwijderd

Weet je meer over waarom hij het soms niet doet? Zijn het bepaalde username/password combinaties? Een bepaalde tijd? Een bepaalde machine waarop hij niet altijd werkt? Bepaalde versie van php? Specifieke webbrowser die problemen oplevert? etc etc
Pagina: 1