PHP Sessie probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Heb een intranetje gemaakt waarbij de mensen in de backoffice moeten inloggen.
Werkt perfect en hierdoor zijn er een deel nieuwe request gekomen om zaken te kunnen aanpassen en bijvoegen.
Om dit te doen heb ik op dezelfde server een copy gemaakt van de orginele source. Alles werkt aan deze copy buiten dat ik niet kan inloggen in de backoffice. Ik zie dat hij een sessie maakt op het moment dat ik me probeer in te loggen. Maar ook een lege sessie zonder iets ?????

Login systeem is ...
login.php roept een sql db aan checkt usergegevens bestaat die user en is zijn wachtwoord correct dan maakt hij de sessie aan waar hij wat rommel in steekt.
Nadien geeft hij een 1 terug uit de functie indien alles OK is. Aan de hand van die 1 redirect hij naar een admin.php
En ik denk dat daar het probleem zit. Admin,php heeft een include van checklogin.php die gaat kijken of je sessie nog wel geldig is. Ik denk dat hij hier de lege sessie maakt. met als gevolg dat hij me niet wil inloggen want mij sessie is verlopen.....

Iemand een slim antwoord k heb mij al rot gezocht op google, en de identiek zelfde code werkt ook op de life omgeving.

Because Great minds Think alike


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Waarom maak je een sessie pas aan op het moment van inloggen? Dat hoor je gewoon helemaal bovenaan je scripts te doen? Denk dat daar je probleem zit.

[ Voor 11% gewijzigd door MueR op 28-01-2009 16:07 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Kwestie van debuggen lijkt me. Controleer op elk punt of je die sessie hebt en wat er in zit en je weet vanzelf waar die overschreven wordt danwel verwijderd wordt.

MueR: hij bedoelt het als actie, niet als plek in de code volgens mij.

Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Ik snap het echt niet.
Ik heb van hier het loginsysteem even genomen omdat ik er met mijn geheel neit uitkwam

login.php
code:
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
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="checklogin.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="text" id="mypassword"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>


checklogin.php
code:
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
<?php
ob_start();
require_once("./config/config.inc.php");
require_once($config[installedbase]."/includes/mysql.inc.php");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM Users WHERE Username='$myusername' and Password='$mypassword' and Active='1'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file "admin.php"
session_register("myusername");
session_register("mypassword");
header("location:admin.php");
}
else {
echo "Wrong Username or Password";
}

ob_end_flush();
?>


begin admin.php

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
global $SHOP, $language,$config;
include("./includes/functions.inc");
include_once("./fckeditor/fckeditor.php") ;
include("./lang/lang.inc");
include("./includes/validation_class.php");
include("./includes/class.phpSortable.php");



session_start();
if(!session_is_registered(myusername)){
header("location:login.php");
}
?>


en toch doet hij het niet.... bij het checklogin.php gebeuren maar hij een session file aan die gevuld is maar bij de admin.php pagina maakt hij er een lege aan ????
ik kan echt niet meer volgen

Because Great minds Think alike


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.
Dit misschien?

http://nl.php.net/session_register


Verder is het beter om gebruik te maken van $_SESSION array

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
Das niet voor niks ;) Zoals LuCarD al zegt: gebruik de juiste superglobals ($_SESSION, $_POST, etc...)

edit:
kleine tip nog...zet een exit(); achter je redirect. Een browser die je header negeert (om welke reden dan ook) krijgt anders gewoon je mooi beveilige pagina te zien ;)

[ Voor 26% gewijzigd door Cartman! op 29-01-2009 18:38 ]

Pagina: 1