Versio

inloggen

Overzicht Reageren

Karim karim

karim karim

21/08/2010 19:44:33
Quote Anchor link
Hallo dag allemaal,

Ik heb twee vragen:

1) Hoe stel ik het beste in dat er een foutmelding komt als de combinatie gebruikersnaam/paswoord niet correct is ?

2) Als een gebruiker in een pagina (één van de velen) wil geraken waar hij eerst voor moet inloggen krijgt hij onmiddelijk een inlogformulier om in te vullen. Hoe stel je in dat hij na ingelogd te zijn onmiddelijk naar de gewenste pagina wordt doorgeschakeld ?

alvast bedankt
 
PHP hulp

PHP hulp

25/05/2012 04:32:32
Gesponsorde koppelingen:
 
Bas IJzelendoorn
Moderator

Bas IJzelendoorn

21/08/2010 20:16:46
Quote Anchor link
hmm, dat hangt er volgens mij helemaal van af hoe je script in elkaar zit. Of je sessies gebruikt of cookies en wat voor beveiliging? En hoe je script is opgebouwd.
Gewijzigd op 21/08/2010 20:17:02 door Bas IJzelendoorn
 
Karim karim

karim karim

22/08/2010 00:39:11
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
70
71
72
73
74
75
76
<?php
session_start();
$Verkeerd="Uw gebruikersnaam en/of paswoord zijn verkeerd of niet ingevuld.";
if (isset($_POST['verzenden']))
{


$gebruikersnaam = $_POST["gebruikersnaam"];
$paswoord = $_POST["paswoord"];

// controleren of naam en paswoord in database voorkomen
// foutmelding als ie niet klopt
// als het klopt dan sessievariabelen aanmaken


$db=mysql_connect("localhost","afhaalpizz_root2","admin");

mysql_select_db("afhaalpizz_klanten",$db) or die ("Fout: openen database mislukt");
$sql = "SELECT * FROM gegevens WHERE Gebruikersnaam = \"" . $gebruikersnaam . "\" AND Paswoord = \"" . $paswoord . "\" ";
$result=mysql_query("$sql");

if(mysql_num_rows($result) ==1)
    {


while ($rij=mysql_fetch_assoc($result))
        {

if(($gebruikersnaam==$rij["Gebruikersnaam"]) AND ($paswoord==$rij["Paswoord"]))

            {

$_SESSION["gebruikersnaam"] = $gebruikersnaam;
$_SESSION["paswoord"] = $paswoord;
header("Location:ingelogd.php");

            }



else{echo $Verkeerd;}


 
            
        }
    }
}

?>

<html>
<head>
     <title>inloggen.php</title>
</head>
<body>
<table><tr><td>

<?php
include ("includes/hoofdmenu.php");
?>


</td><td>

<form action="inloggen.php" method="post">
<input type="button" value="Gebruikersnaam" style="width:150px" />
<input type="text" name="gebruikersnaam" /><br />
<input type="button" value="Paswoord" style="width:150px" />
<input type="password" name="paswoord" />
<br />
<input type="submit" name="verzenden" value="Inloggen" />

</form>

<br /><img src="afbeeldingen/aanmelden.jpg" style="width:150px" border="1" onclick="location='aanmelden.php';" />

</td></tr></table>

<center>
Welcome to inloggen.php.
</center>

</body>
</html>


Toevoeging op 22/08/2010 00:39:29:

dit was het inlogformulier

Toevoeging op 22/08/2010 00:41:45:

als ik ingelogd ben ga ik naar een apart bestand 'ingelogd.php'

nu wil ik automatisch doorgeschakeld worden naar het (één van de vele) gewenste bestand
Gewijzigd op 22/08/2010 17:17:29 door Bas IJzelendoorn
 
Noppes Homeland

Noppes Homeland

22/08/2010 12:34:23
Quote Anchor link
Er klopt niet veel van wat je gecodeerd hebt:
1. controles en validaties
2. op het gebruik van die() staat de doodstraf
3. je slaat geen privacy gevoelige info op in sessions / coookies
4. script logica klopt niet

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
70
71
72
73
74
<?php
session_start();

if ($db=mysql_connect('*****','*****','*****')) {

    if (!mysql_select_db('afhaalpizz_klanten',$db))
       unset($db);
    }
}


if ($db) {
    $Verkeerd = 'Uw gebruikersnaam en/of paswoord zijn verkeerd of niet ingevuld.';
    $bError = false;
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        
        if (   isset($_POST['gebruikersnaam']) && trim($_POST['gebruikersnaam']) != ''
            && isset($_POST['passwoord']) && trim($_POST['paswoord']) != '')
        
            // wachtwoord sla je op met md5 of sha1 of andere manier van hash
            $sql = "SELECT *
                    FROM   gegevens
                    WHERE  gebruikersnaam = '"
.mysql_real_escape_string($_POST['gebruikersnaam']."'
                    AND    password = '"
.md5($_POST['paswoord'])."'";  
                    
                    
            if (($result = mysql_query($sql)) === false) {
               // schrijf mysql_error() en $sql naar een error file
               $bError = true;
            }

            else {
               if (mysql_num_rows($result) == 1) { // als het aantal opgehaalde record > 1 is dan klopt er iets niet gebruikersnaam dient uniek te zijn!
                  $row = mysql_fetch_assoc($result];
                  $_SESSION['ingelogd'] = 1;
                  unset($row['paswoord']); // wactwoorden en pricicy gegevens sla je niet op in $_COOKIE / $_SESSION
                  $_SESSION['gid'] = $row;                              
               }

               else {
                  $bError = true;
               }
            }
        }

        else {
           $bError = true;
        }

        
        if ($bError) {
           echo $Verkeerd;
        }

        else {
            header('Location: ingeloged.php');
        }        
    }
}

else {
   // schrijf mysql_error() naar een error file
   echo 'Op dit moment is het niet mogelijk in te loggen';
}

?>



<?php
session_start();
if (isset($_SESSION['ingelogd']) === false) {
   header('Location: inloggen.php');
}

?>



<form action="inloggen.php" method="post">
   <input name="gebruikersnaam" type="text" />
   <input name="gebruikersnaam" type="password" />
   <input name="verzenden" type="submit" value="inloggen" />
</form>  
 
Karim karim

karim karim

22/08/2010 15:38:55
Quote Anchor link
Dit is voor te oefenen, geen commerciële website of iets dergelijks.
Ik leer stap voor stap. Het script dat je hebt gepost is te moeilijk voor me. Ik hou het bij het mijne tot het werkt en dan zie ik wel naar de andere zaken (privacy,die,logica,enz).

Ik ben momenteel bezig met twee dingen die niet willen lukken: direct doorschakelen naar de gewenste pagina na ingelogd te zijn en een foutmelding krijgen op dezelfde inlogpagina als de inloggegevens fout zijn.
 
Joren de Wit
Beheerder

Joren de Wit

22/08/2010 15:42:12
Quote Anchor link
Direct doorsturen na succesvolle poging:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header('Location: volgende_pagina.php');
?>

Wat betreft de foutmelding, die kun je gewoon vanuit hetzelfde script echoën...

Wellicht ook handig: PHP Beginnershandleiding
 
Karim karim

karim karim

22/08/2010 16:47:28
Quote Anchor link
deze header methode ken ik al

ik zal het anders uitleggen:

ik zit op de voorpagina van de website, ik wil naar het bestelformulier dus klik ik op 'bestellen' maar aangezien ik niet ingelogd ben wordt ik doorgestuurd naar het inlogformulier en na ingelogd te zijn moet ik onmiddelijk doorgeschakeld worden naar het bestelformulier.

mijn vraag:

hoe kan ik zo instellen dat de website mij onmiddelijk doorschakelt naar het bestelformulier na ingelogd te zijn enkel omdat ik voor dat ik ingelogd was heb geklikt op de link 'bestellen' ?

hoe kan ik zo instellen dat de website mij onmiddelijk doorschakelt naar het bloggedeelte na ingelogd te zijn enkel omdat ik voor dat ik ingelogd was heb geklikt op de link 'bloggen' ?

alvast bedankt
 
Joren de Wit
Beheerder

Joren de Wit

22/08/2010 16:52:49
Quote Anchor link
Dan zul je dus op een of andere manier moeten registreren vanaf welke pagina de bezoeker naar de login pagina verwezen is. Dat kan wellicht met de waarde in $_SERVER['HTTP_REFERER'], dus daar zou je eens naar kunnen kijken.
 
Karim karim

karim karim

22/08/2010 17:21:55
Quote Anchor link
In de inlogpagina (tussen php-tags):

$VorigePagina=$_SERVER['HTTP_REFERER'];
header('Location:'.$VorigePagina);

lukt niet.
 
Joren de Wit
Beheerder

Joren de Wit

22/08/2010 17:33:23
Quote Anchor link
Echo de waarde van $_SERVER['HTTP_REFERER'] eerst eens en kijk of die waarde klopt...
 
Ferry d

ferry d

17/09/2010 19:58:25
Quote Anchor link
Ik heb even zijn code gekopieert en het aangepast om het mogelijk te maken. Hier is de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
// Oude locatie opvragen die is
//  opgestuurt door middel van
//  header("Location: inloggen.php?oudeLocatie=" . $_SERVER["REQUEST_URI"]);

$oudelocatie = $_REQUEST['oudeLocatie'];



session_start();
$Verkeerd = "Uw gebruikersnaam en/of paswoord zijn verkeerd of niet ingevuld.";
if (isset($_POST['verzenden']))
{
    $gebruikersnaam = $_POST["gebruikersnaam"];
    $paswoord = $_POST["paswoord"];

    /// controleren of naam en paswoord in database voorkomen
    /// foutmelding als ie niet klopt
    /// als het klopt dan sessievariabelen aanmaken


    $db = mysql_connect("localhost","afhaalpizz_root2","admin");

    
    // Veiligheids maatregel
    $gebruikersnaam = mysql_real_escape_string($gebruikersnaam);
    $paswoord       = mysql_real_escape_string($paswoord);
    // Deze maatregel heeft een verbinding met MYSQL nodig;
    
    
    
    mysql_select_db("afhaalpizz_klanten",$db) or die ("Fout: openen database mislukt");
    $sql = "SELECT * FROM `gegevens` WHERE Gebruikersnaam = \"" . $gebruikersnaam . "\" AND Paswoord = \"" . $paswoord . "\" ";
      // Tabel naam tussen `` gezet.
      
      
      
    $result = mysql_query($sql); // $sql uit de "" gehaald.
    if(mysql_num_rows($result) == 1)
     {
    // Aangezien je alleen resultaten kan hebben
         //  Waar de gebruikersnaam en wachtwoord klopt,
         //  hoef je het dus niet dubbel te controleren.

         
         $_SESSION["gebruikersnaam"] = $gebruikersnaam;
         $_SESSION["paswoord"] = $paswoord;
         
         
         
         
         // We willen de oude loctie in een url gebruiken:
         //  Voorkom slechte URL's

         $oudelocatie = urlencode($oudelocatie);
         
         
         
         header("Location: ingelogd.php?oudeLocatie=" . $oudelocatie);
         // Geef de oude loctie door aan ingelogd.php;
         exit();  
         // Na een header('location: '); een exit(); gebruiken om het script te stoppen
    }
    else
     {    // Er is niks gevonden waar de ingevoerde gebruikersnaam
         //  en wachtwoord mee overeen komen:
         //  Gebruiker bestaat niet.

         echo $Verkeerd;
     }

     mysql_close($db); // Sluit de verbinding met mysql.
}


?>

<html>
<head>
         <title>inloggen.php</title>
</head>
<body>
         <table>
         <tr>
         <td>
<?php
include ("includes/hoofdmenu.php");
?>


</td><td>

<form action="inloggen.php" method="post"><p><!-- <p> toegevoegt om goede HTML te maken -->
<input type="button" value="Gebruikersnaam" style="width: 150px;" />
<input type="text" name="gebruikersnaam" /><br />
<input type="button" value="Paswoord" style="width: 150px;" />
<input type="password" name="paswoord" />
<br />
<!-- Geef de oude locatie door aan het volgende document. -->
<input type="hidden" name="oudeLocatie" value="<?PHP echo $oudelocatie; ?>"/>


<input type="submit" name="verzenden" value="Inloggen" />

</p></form>

<p><!-- <p> toegevoegt om goede HTML te maken -->
<br/><img src="afbeeldingen/aanmelden.jpg" style="width: 150px;" border="1" onclick="location = 'aanmelden.php';" />
</p>

</td></tr></table>

<center>
<p>Welcome to inloggen.php.</p><!-- <p> toegevoegt om goede HTML te maken -->
</center>

</body>
</html>


Als iemand naar inloggen.php moet worden gestuurt moet je dit gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP header("Location: inloggen.php?oudeLocatie=" . $_SERVER["REQUEST_URI"]); ?>


Ik ben zelf een PHP-exper dus ik heb het gebrobeer makkelijk begrijpbare code te maken, het is dus NIET 100% hack-proef!

Bij ingelocht.php moet je
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo('<a href="' . $_REQUEST['oudeLocatie'] . '">' . "Link text" . '</a>'); ?>
zetten als je een link naar de oude pagina wilt.
Gewijzigd op 17/09/2010 20:03:17 door ferry d
 
- Mark -

- Mark -

17/09/2010 20:25:30
Quote Anchor link
Quote:
Ik ben zelf een PHP-exper


LOL je hebt er anders best nog wel wat foutjes in zitten.

- Je echoed content boven je html gedeelte.
- "$gebruikersnaam = $_POST["gebruikersnaam"];" is nergens voor nodig.
- Het wachtwoord in een sessie opslaan? Helemaal nergens voor nodig.
- Het wachtwoord word zonder te coderen opgeslagen.
- Je hebt nul comma nul fout afhandeling.
- mysql_close() is nergens voor nodig.
- die() is ook niet echt mooi.
- backtics uit je sql slopen.
- als je enkele quotes had gebruikt had je je dubble quotes niet hoeven te escapen in je sql.

Het enige plus punt is meer en beter commentaar in je script. Al is het al bijna een maand te laat ben ik bang.
 
Mar cel

Mar cel

18/09/2010 00:05:35
Quote Anchor link
Verder zal naar mijn inziens $_SERVER['http_referer'] niet werken omdat je van het inlog formulier komt, er zit dus nog een pagina tussen. (geblokkeerde pagina/inlogpagina/verwerk) Wat mij beter lijkt is om bij de melding dat iemand ingelogd moet zijn, een sessie aanmaken met de URL oid als waarde. Later na het inloggen check je of die sessie aanwezig is, stuur je door en verwijder je evt nog die sessie.

Weet dat het al beetje laat is maar misschien handig voor de andere gebruikers.
 
Rudie dirkx

rudie dirkx

18/09/2010 00:10:15
Quote Anchor link
Zonder de laatste 5 posts gelezen te hebben...

Wat ik altijd deed (deed!!), was:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ( inlogtroep ) {
  if ( foute inlog ) {
    header('Location: login.php?msg=Verkeerde shit ingevuld, trol!');
    exit;
  }
  ..
goeie inlog dus doe je ding
  header('Location: intranet.php?msg=Goedzo, je hebt je wachtwoord onthouden.');
  exit;
}
...
formulier hier ...
?>


Toevoeging op 18/09/2010 00:11:06:

HTTP_REFERER hoeft trouwens nooit te bestaan. Ga daar dus niet van uit! En in Safari kan je m spoofen.
 



Overzicht Reageren