Variabel definiëren (inlog- en registratie script)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Shynn lee

shynn lee

30/01/2011 16:11:15
Quote Anchor link
Van onderstaande scriptie krijg ik de volgende melding:
Notice: Undefined index: actie in C:\wamp\www\login.php on line 8
Notice: Undefined index: actie in C:\wamp\www\login.php on line 30

Waarschijnlijk moet variabel 'actie' definiëren. Kan iemand helpen hoe?
Quote:
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
// sql connectie includen
include('contactdb.php');

// waar moet de bezoeker heengestuurd worden nadat hij/zij succesvol ingelogd is ?
$redirect_pagina = "pagina.php";

if ($_GET['actie'] == 'inloggen') {
// als inlogformulier is verstuurd

    $sql = "SELaECT * FROM members WHERE inlognaam='".$_POST['inlognaam']."'";
    $resultaat = mysql_query($sql) OR die ("Kon geen verbinding maken met MySQL");
    $aantal = mysql_num_rows($resultaat);
    if ($aantal == '0') {
    // als er geen resultaat is gevonden
        echo "Het door u ingevulde inlognaam bestaat niet.";
    }
else {
    $login = mysql_fetch_object($resultaat);
    $login->passwoord;
    $login->inlognaam;
        if($_POST['passwoord'] == $login->passwoord) {
        // als gegevens kloppen met gegevens uit database, cookies setten en doorsturen!
                setcookie("inlognaam", $_POST['inlognaam'], time() + 60*60); // cookie blijft 60 keer 60 seconden bestaan
                setcookie("passwoord", $_POST['wachtwoord'], time() + 60*60);
            echo "U bent succesvol ingelogd, een moment.. <META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2; URL=".$redirect_pagina."\">";
        }
else {
            echo "Uw inloggegevens kloppen niet, klik <a href=\"".$_SERVER['PHP_SELF']."\">hier</a> om nogmaals te proberen.";
        }
    }
}
else if ($_GET['actie'] == 'registreren') {
// als men zich wil registreren
    if ($_GET['versturen'] == 'ja') {
    // als formulier reeds is verstuurd
            if (empty($_POST['inlognaam'])) {
                echo "Je hebt geen inlognaam ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
            }
else if (empty($_POST['passwoord'])) {
                echo "Je hebt geen passwoord ingevuld, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
            }
else if (empty($_POST['passwoord_controle'])) {
                echo "Je moet ter controle ook het controleveld voor het passwoord invullen, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
            }
else {
                if ($_POST['passwoord'] != $_POST['passwoord_controle']) {
                    echo "De ingevoerde passwoorden kwamen niet overeen, <a href=\"".$_SERVER['PHP_SELF']."?actie=registreren\">Probeer nogmaals</a>.";
                }
else {            
                        $registreer = "INSERT INTO members (inlognaam, passwoord) VALUES ('".$_POST['inlognaam']."', '".$_POST['passwoord']."')";
                        mysql_query($registreer) or die(mysql_error());                
                    echo "Uw gegevens zijn succesvol opgeslagen! Klik <a href=\"".$_SERVER['PHP_SELF']."\">hier</a> om in te kunnen loggen.";        
                }
            }
        }
else {
        // als formulier nog niet is verstuurd, toon registratieformulier
    
            echo "<form action=\"".$_SERVER['PHP_SELF']."?actie=registreren&amp;versturen=ja\" method=\"post\">
            <table>
            <tr><th colspan=\"2\">Registreren</th></tr>
            <tr><td>Inlognaam</td><td><input type=\"text\" name=\"inlognaam\" size=\"15\"></td></tr>
            <tr><td>Passwoord</td><td><input type=\"password\" name=\"passwoord\" size=\"15\"></td></tr>
            <tr><td>Passwoord <small>(controle)</small></td><td><input type=\"password\" name=\"passwoord_controle\" size=\"15\"></td></tr>
            <tr><td></td><td><input type=\"submit\" value=\"Registreer\"></td></tr>
            </table></form>"
;
        }
    
}
else {
// inlogformulier

    echo "<form action=\"".$_SERVER['PHP_SELF']."?actie=inloggen\" method=\"post\">
    <table>
    <tr><th colspan=\"2\">Inloggen</th></tr>
    <tr><td>Inlognaam</td><td><input type=\"text\" name=\"inlognaam\" size=\"15\"></td></tr>
    <tr><td>Passwoord</td><td><input type=\"password\" name=\"passwoord\" size=\"15\"></td></tr>
    <tr><td></td><td><input type=\"submit\" value=\"Inloggen\"></td></tr>
    <tr><td></td><td><a href=\""
.$_SERVER['PHP_SELF']."?actie=registreren\">Registreren</a></td></tr>
    </table></form>"
;
}

?>
 
PHP hulp

PHP hulp

26/12/2024 03:24:37
 
- SanThe -

- SanThe -

30/01/2011 16:21:51
Quote Anchor link
Zie isset() om te kijken of ie wel bestaat.
 
Jason  van der Zeeuw

Jason van der Zeeuw

30/01/2011 16:50:21
Quote Anchor link
if(isset($_GET['actie']){

boven line 8 zetten en afsluiten net boven de laatste else
Gewijzigd op 30/01/2011 17:14:37 door Jason van der Zeeuw
 
Noppes Homeland

Noppes Homeland

30/01/2011 16:53:50
Quote Anchor link
@Jazon, lekker handig hoor z'n oplossing.......... zal je het niet gewoon als eerste toevoegen aan de if van regel 8
 
Ozzie PHP

Ozzie PHP

30/01/2011 16:59:27
Quote Anchor link
$sql = "SELaECT * FROM members WHERE inlognaam=....

Het woord SELaECT moet zijn SELECT!
 
Jason  van der Zeeuw

Jason van der Zeeuw

30/01/2011 17:14:00
Quote Anchor link
@Noppes kan ook ja..
en dan ook aan de else if van regel 30
 
Noppes Homeland

Noppes Homeland

30/01/2011 18:02:12
Quote Anchor link
ook dat

en de regels waarbij empty() gebruikt wordt is ook niet zoals het behoort

if (isset($_POST['...']) && strlen($_POST['...']) >= x) {

zal het al een stuk beter doen
er zijn ook nog functies als:
ctype_
preg_

om de inhoudsverwachting beter te cotroleren
 
- SanThe -

- SanThe -

30/01/2011 18:06:47
Quote Anchor link
Aanvulling op Noppes: Html echo je het best met enkele quotes. De dubbele html-quotes hoef je dan niet meer te escapen. Verder is het script lek => SQL-Injection.

Toevoeging op 30/01/2011 18:08:35:

En een wachtwoord zet je nooit in een cookie().
 
Shynn lee

shynn lee

31/01/2011 19:08:13
Quote Anchor link
Door jullie input is mijn probleem opgelost. Bedankt allemaal.
 
Pim -

Pim -

31/01/2011 21:03:06
Quote Anchor link
Noppes Homeland op 30/01/2011 18:02:12:
om de inhoudsverwachting beter te cotroleren


Met de verwachting zal het echt wel goed zitten hoor ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.