[php] session login werkt niet

Pagina: 1
Acties:
  • 121 views sinds 30-01-2008
  • Reageer

Onderwerpen


  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Hallo..

Op mn site heb k n login.

code:
1
2
3
4
// log user in
        session_register("login"); 
        session_register("password");
      header("Location: main.php");


daarmee doe ik inloggen. Op de pagina main.php doe ik dan controleren of er is ingelogt op de volgende manier:


code:
1
2
3
4
5
6
7
8
<?
if ($_SESSION["login"] != "admin" || $_SESSION["password"] != "admin") 
{
 // login fout
 die("Sessie:" . print_r($_SESSION));
 echo "fout";
}
else {


alleen als ik dan inlog doet hij het niet en geeft hij dit aan:

Sessie:1


op internet alleen iets gevonden over register globals opties....

verder zou ik niet weten hoe ik dit kan oplossen....

iemand ideeën?/

Groetjes!!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Gebruik niet session_register en $_SESSION door elkaar. Staat ook in de manual op php.net...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

session_register niet gebruiken, alleen van de variable $_SESSION[] gebruikmaken..

ik zelf heb de ervaring dat session_register niet werkt :(
zoals NMe84 eigenlijk al zei...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Session_register werkt perfect, mits je het consequent gebruikt. Dus niet op de ene pagina met die functie werken, en op de andere met een array. Zelf geef ik sowieso de voorkeur aan het array, werkt sneller. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Daarbij komt dat session_register nu al minstens anderhalf jaar aangegeven staat als deprecated...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
dus dan zou ik eht zo neer moeten zetten??

code:
1
2
3
4
/ log user in
        $_SESSION["login"] = $login;
        $_SESSION["password"] = $password;
      header("Location: main.php");

Verwijderd

denk het ewl :)

$_SESSION["login"]

moet dat niet zijn:

$_SESSION['login']

of mag dat ook beiden?

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
doet het nog steeds niet :S

niet met ' en ook niet met "

Verwijderd

if ((!$_SESSION["login"] == "admin") && (!$_SESSION["password"] == "admin"))


zo doe ik het altijd.....

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
ja ok...maar als je voor t eerst inlogt meot ej toch eerst je sessie registeren

Acties:
  • 0 Henk 'm!

Verwijderd

twisted2000 schreef op 12 augustus 2004 @ 23:59:
ja ok...maar als je voor t eerst inlogt meot ej toch eerst je sessie registeren
ik paste allen je if statement aan.....

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

stomme vraag misschien, maar heb je ook wel ergens session_start() staan?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
ja helemaal bovenaan

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

twisted2000 schreef op 12 augustus 2004 @ 23:59:
ja ok...maar als je voor t eerst inlogt meot ej toch eerst je sessie registeren
Ja, maar niet met session_register()...

PHP:
1
2
3
4
// log user in
      session_register("login"); 
      session_register("password");
      header("Location: main.php");


En op main.php gewoon dit:
PHP:
1
2
3
4
5
6
7
if ($_SESSION["login"] != "admin" || $_SESSION["password"] != "admin") 
{
  // login fout
  die("Sessie:" . print_r($_SESSION));
  echo "fout";
}
else {

Wat je al had dus.


Verder maakt het niet uit of je " of ' gebruikt, ' is alleen iets sneller in verband met het niet parsen van variabelen ertussen. Staat ook allemaal in de manual. :P

[ Voor 10% gewijzigd door NMe op 13-08-2004 00:04 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023

Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
maar dat

code:
1
2
3
4
5
6
<?
// log user in 
      session_register("login"); 
      session_register("password"); 
      header("Location: main.php");
?>


heb ik ondertussen veranderd in:

code:
1
2
3
4
// log user in
        $_SESSION['login'] = $login;
        $_SESSION['password'] = $password;
      header("Location: main.php");


maatr hij doet nog steeds niet veel

Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Zijn de variabellen wel gevuld met iets?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

en waar komen $login en $password vandaan? wat is je setting van register_globals?

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

post eens de volledige code hier van het hele bestand?

Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
  session_start();

  if (isset($_POST["login"]) && isset($_POST["password"])) {

    $login = $_POST["login"]; 
    $password = ($_POST["password"]);
    if ($login == "admin" && $password == "admin") {

// log user in
        $_SESSION['login'] = $login;
        $_SESSION['password'] = $password;
                                 header("Location: main.php");
        } 
                                else {
            // display error
            die("fout");
        }

?>

Acties:
  • 0 Henk 'm!

Verwijderd

index.php:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
  session_start();
  if ((isset($_POST["login"])) && (isset($_POST["password"]))) {
    $login = $_POST["login"]; 
    $password = ($_POST["password"]);
    if ($login == "admin" && $password == "admin") {
      $_SESSION['login'] = $login;
      $_SESSION['password'] = $password;
      header("Location: main.php");
    } 
    else {
      die("fout");
    }
  }
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
login : <input type="text" name="login">
password : <input type="text" name="password">
<input type="submit">
</form>


main.php:
code:
1
2
3
4
5
6
7
8
9
10
11
<?
session_start();

if (($_SESSION["login"] != "admin") && ($_SESSION["password"] != "admin")) { 
 die("Sessie:" . print_r($_SESSION));
 echo "fout";
}
else {
  echo "jeuj ingelogt!";
}
?>


zo werkt ie bij mij wel :9~

Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
jaaaa werkt!!


wat n stomme fout:


had session_start(); alleen bij de login staan en neit bij main.php


allen bedankt!!! _/-\o_ _/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

@ ur service :9

Acties:
  • 0 Henk 'm!

  • Anders
  • Registratie: December 2000
  • Laatst online: 13-09 18:52
PHP:
1
if (false) die("Sessie:" . print_r($_SESSION));


klopt natuurlijk niet, althans, niet op de manier waarop jij het in gedachten hebt. print_r() returned geen text terug, maar output het direct naar de browser. Gebruik dan liever:

PHP:
1
2
3
4
5
6
if (false) {
  echo "<pre>";
  print_r($_SESSION);
  echo "</pre>";
  exit;
}


.. of maak er een functie van die de output van print_r captured (ob_start etc) en returned, en die je vervolgens kunt gebruiken

PHP:
1
die(die_functie());

Ik spoor veilig of ik spoor niet.


Acties:
  • 0 Henk 'm!

Verwijderd

Gebruik ook altijd haakjes enzo, om onduidelijkheid te voorkomen.
Theoretisch zou het volgende uitgevoerd kunnen worden, waardoor het mis kan gaan...

code:
1
    if ($login == ("admin" && $password) == "admin") {

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 13 augustus 2004 @ 14:27:
Gebruik ook altijd haakjes enzo, om onduidelijkheid te voorkomen.
Theoretisch zou het volgende uitgevoerd kunnen worden, waardoor het mis kan gaan...

code:
1
    if ($login == ("admin" && $password) == "admin") {
Dat zou theoretisch zeker niet kunnen. Reden: in PHP heeft de vergelijkingsoperator prioriteit over de and-operator. Natuurlijk kun je in geval van twijfel beter teveel dan te weinig haakjes gebruiken, maar hier kan het best zonder. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

wel leuk dat we nog steeds in een topic posten waar we toch heel leuk al een oplossing voltooid hadden :Y)

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 13 augustus 2004 @ 14:55:
wel leuk dat we nog steeds in een topic posten waar we toch heel leuk al een oplossing voltooid hadden :Y)
En zolang mensen een beetje zijlangs gaan doorpraten over enkele andere onderdelen en hierover doordiscussieren, heb ik er weinig problemen mee. :)
En nu weer ontopic, voor zover mogelijk.

[ Voor 3% gewijzigd door gorgi_19 op 13-08-2004 14:57 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1