Inlogformulier .txt reageert niet!
Pagina: 1 2 3 ... 9 10 11 volgende »
jeremy:hoi123
pietjebel:lalala
jerry:kloer
joey:jerry
Waarmee dit de indeling is:
username:wachtwoord
Dit is mijn code, onder de code staat nog klein stukje uitleg:
Code (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
70
71
72
73
74
75
76
77
78
79
80
81
82
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
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$file = file('users.txt');
$name = $_POST['user'];
$pass = $_POST['pass'];
$error = array();
$veldnaam = trim($name);
$veldpass = trim($pass);
//gebruikersnaam controleren
if(isset($name))
{
if(empty($name))
{
$error[] = "U heeft uw gebruikersnaam niet ingevuld";
}
}
//wachtwoord controleren
if(isset($pass))
{
if(empty($pass))
{
$error[] = "U heeft uw wachtwoord niet ingevuld";
}
}
//controleren of er errors zijn
if(empty($error))
{
foreach($file as $value)
{
$los = explode(":", $value);
$user[$los[0]] = $los[1];
}
if(in_array($veldnaam, $user))
{
if($user[$veldnaam] == $veldpass)
{
echo "U bent succesvol ingelogd!";
}
}
else
{
echo "Uw gebruikersnaam en wachtwoord komen niet overeen.";
}
}
else
{
if(count($error[1]))
{
echo "Er zijn meerdere dingen fout gegaan: ";
foreach($error as $showerror)
{
echo "<br /> -" . $showerror;
}
}
else
{
foreach($error as $showerror)
{
echo $showerror;
}
}
}
}
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$file = file('users.txt');
$name = $_POST['user'];
$pass = $_POST['pass'];
$error = array();
$veldnaam = trim($name);
$veldpass = trim($pass);
//gebruikersnaam controleren
if(isset($name))
{
if(empty($name))
{
$error[] = "U heeft uw gebruikersnaam niet ingevuld";
}
}
//wachtwoord controleren
if(isset($pass))
{
if(empty($pass))
{
$error[] = "U heeft uw wachtwoord niet ingevuld";
}
}
//controleren of er errors zijn
if(empty($error))
{
foreach($file as $value)
{
$los = explode(":", $value);
$user[$los[0]] = $los[1];
}
if(in_array($veldnaam, $user))
{
if($user[$veldnaam] == $veldpass)
{
echo "U bent succesvol ingelogd!";
}
}
else
{
echo "Uw gebruikersnaam en wachtwoord komen niet overeen.";
}
}
else
{
if(count($error[1]))
{
echo "Er zijn meerdere dingen fout gegaan: ";
foreach($error as $showerror)
{
echo "<br /> -" . $showerror;
}
}
else
{
foreach($error as $showerror)
{
echo $showerror;
}
}
}
}
?>
Deze error krijg ik:
Notice: Undefined offset: 1 in /home/deb44223/domains/dj-jeremy.nl/public_html/login.php on line 74
En als ik $value uitlees krijg ik het zo weergegeven op het scherm:
jeremy:hoi123 pietjebel:lalala jerry:kloer joey:jerry
Dus alles achter elkaar, en in het .txt bestand staat het onder elkaar. (zie boven)
Het probleem is dus dat hij de gegevens niet controleert om in te loggen.
Wat moet ik doen?
Wel is het iets dat verholpen moet worden, maar daarover kan je verder gaan in je vorige topic.
Als je die vervangt door:
moet hij goed gaan..
P.S.:
Waarom start je iedere keer een nieuw topic?
Edit:
Je doet een foreach, dus iedere $value laat hij zien;)
Quote:
En als ik $value uitlees krijg ik het zo weergegeven op het scherm:
jeremy:hoi123 pietjebel:lalala jerry:kloer joey:jerry
jeremy:hoi123 pietjebel:lalala jerry:kloer joey:jerry
Je doet een foreach, dus iedere $value laat hij zien;)
Gewijzigd op 06/10/2011 23:06:28 door Victor -
@victor
heb het verandert, geen resultaat:
Uw gebruikersnaam en wachtwoord komen niet overeen.
Dat heb je hierboven ook niet gevraagd, de error is weg nu..
Quote:
Het probleem is dus dat hij de gegevens niet controleert om in te loggen.
dat is toch echt mijn probleem nog steeds, want hij controleert de gegevens niet, want hij geef ten alle tijden die error..
Je vergelijking klopt niet....
- Aar - op 06/10/2011 23:16:13:
Je vergelijking klopt niet....
Welke bedoel je, deze:
if($user[$veldnaam] == $veldpass)
Wat is er fout aan?
Maak van dit:
$user[$los[0]] = $los[1];
Dit:
$user[$los[0]] = trim($los[1]);
werk niet, nog steeds dezelfde zin:
Uw gebruikersnaam en wachtwoord komen niet overeen.
if(in_array($veldnaam, $user))
Dit:
if(array_key_exists($veldnaam, $user))
Gewijzigd op 06/10/2011 23:32:37 door - SanThe -
je bent een held!
waarom doet die array_key_exists het wel?
Gewijzigd op 06/10/2011 23:35:44 door - Ariën -
- Aar - op 06/10/2011 23:35:22:
in_array controleert op value, en die array_key_exists() controleert de key van het array-element.
dus waar zoeken ze nu in dit geval dan op?
Toevoeging op 06/10/2011 23:38:48:
PS:
Ik moet wel zeggen, hij doet het niet als ik deze trim er niet bij zet, hoe komt dat dan?
$user[$los[0]] = trim($los[1]);
de key dus, als je het leest.....
PS:
Ik moet wel zeggen, hij doet het niet als ik deze trim er niet bij zet, hoe komt dat dan?
$user[$los[0]] = trim($los[1]);
Gewijzigd op 06/10/2011 23:40:57 door Jerry php
Als je even een boekje open had gedaan over array's dan had je het immers wel zelf kunnen zien. ;-)
trim stript spaties aan de uiteinden van een string. Dus je kan de conclusie wel trekken.
Jerry php op 06/10/2011 23:40:39:
Ik moet wel zeggen, hij doet het niet als ik deze trim er niet bij zet, hoe komt dat dan?
$user[$los[0]] = trim($los[1]);
$user[$los[0]] = trim($los[1]);
Omdat de trim de newline (\n) weghaalt die aan het regeleinde staat.
Nu is de volgende vraag, kan ik het het beste met session of met cookie werken, om de login vast te zetten zodat ze niet elke keer moeten inloggen na een refresh of iets dergelijks
Gewijzigd op 06/10/2011 23:45:33 door Jerry php
Session is gewoon veiliger.