Toon posts:

[php] Loginscript met register_globals = Off

Pagina: 1
Acties:
  • 48 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben bezig met een login script, nu heb ik een gedeelte van dat script van een andere site geplukt.
Maar er is een probleem. Ik moet in mijn php.ini bestand hebben staan

register_globals = Off

Dit is ervoor om te zorgen dat je niet zomaar variabelen in de url meegeeft.
Ik weet dat ik nu $_GET $_POST of $_REQUEST enzo moet gebruiken, maar ik kom er echt niet uit. Heb al van alles geprobeerd :'(
Als ik register_globals op On heb staat werkt alles perfect, maar dit wil ik dus niet vanwege de veiligheid.... :( :(
De rest van de site werkt trouwens wel goed als ik register_globals op Off heb staan alleen de login niet, snap er weinig van!!

Ik verwacht natuurlijk niet een compleet uitgewerkt antwoord van iemand, met een tip waar ik zou kunnen zoeken ben ik tevreden :)

Het login script is dit
PHP:
1
2
3
4
5
6
7
8
9
10
11
<FORM action="user.php" method="post">
<CENTER>
<FONT class="content">Nickname<BR>
<INPUT type="text" name="u_name" size="15" maxlength="15"> <BR>
Password<BR>
<INPUT type="password" name="u_pass" size="15" maxlength="15"> <BR>
<INPUT type="hidden" name="op" value="login">
<INPUT type="submit" name="submit" value="Login">
</FONT>
</CENTER>
</FORM>


user.php ziet er zo uit
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?PHP
include "auth.php";
if ($_GET[$submit]) 
{
      switch ($_GET[$submit])
      {
          case "Login":
                echo "login user.php";
                $_USER = new user('registered',$u_name,'',$u_pass,'','','');
                if ($_USER->error):
                      echo $_USER->feedback;
                else:
                       header('Location:' .'index.php');
                endif;
                break;
          case "rest":
                blablabla
                break;
       }
}
?>


en dit is auth.php

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
69
<?php
$naam = strtolower($naam);
include "config.inc.php";
include "database.php";

class user {
var $hidden_hash    ='dezeisverborgen';
var $logged_in      = false;
var $checked        = false;
var $name;
var $realname;
var $id_hash;
var $password;
var $passwordb;
var $email;
var $feedback;
var $record;
var $error      = false;

function user($type ="current",
    $name      ='',
    $id_hash   ='',
    $password  ='',
    $passwordb ='',
    $realname  ='',
    $email     =''
            ){
    $this->name      = $name;
    $this->id_hash   = $id_hash;
    $this->password  = $password;
    $this->passwordb = $passwordb;
    $this->realname  = $realname;
    $this->email     = $email;
    switch ($type):
        case "new":
            $this->register();
            break;
        case "registered":
            $this->login();
            break;
        case "current":
            $this->islogged_in();
        case "confirm":
            $this->confirm($this->id_hash,$this->email);
        default:
            break;
    endswitch;
}

function login() {
    if (!$this->name) return ($this->feedback = ' Gebruikersnaam mist');
    if (!$this->password) return ($this->feedback = ' Wachtwoord mist');
    $this->name = strtolower($this->name);
    $this->password = strtolower($this->password);
    $sql= "SELECT * FROM users WHERE user_name='$this->name' AND password='". md5($this->password) . "'";
    $res = db_query($sql);
    if (!$res || db_numrows($res) < 1)
        $this->feedback =   ' Gebruiker niet gevonden of wachtwoord onjuist ';
    else {
        if (db_result($res,0,'is_confirmed') ==  '1') {
        $this->set_tokens();
        $this->feedback = ' U bent nu ingelogd';
        $this->logged_in = true;
    } else  $this->feedback = ' FOUT - Niet geconfirmed!!!';
    }
}
//hier staat nog veel meer, maar dit is niet nodig hier
// in config.inc.php en database.php staan wat connecties!!
?>

Verwijderd

Je moet $_POST['varnaam'] gebruiken ipv $_GET[$varnaam] :) (je gebruikt immers method="POST")

[ Voor 31% gewijzigd door Verwijderd op 17-01-2003 15:40 ]


  • Rickbv
  • Registratie: September 2000
  • Laatst online: 22:18
Als beginnend PHP'er zou ik eerst het volgende eens proberen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?PHP 
include "auth.php"; 
if ($_GET['submit'])  
{ 
      switch ($_GET['submit'])
      { 
          case "Login": 
                echo "login user.php"; 
                $_USER = new user('registered',$_GET['u_name'],'',$_GET['u_pass'],'','',''); 
                if ($_USER->error): 
                      echo $_USER->feedback; 
                else: 
                       header('Location:' .'index.php'); 
                endif; 
                break; 
          case "rest": 
                blablabla 
                break; 
       } 
} 
?> 


Volgens mij zou 'ie het nu toch al een stuk beter moeten doen... suc6 :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 25-08 12:28

Janoz

Moderator Devschuur®

!litemod

Zie hierboven.. post is niet get..

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


Dit topic is gesloten.