HTML form zet PHP script niet in werking..
We zijn bezig met een ledensysteem, maar lopen vast...
Bij het klikken op de submit button vernieuwd de pagina gewoon, maar verstuurd niets...
Ik heb het idee dat het HTML formuliertje het PHP script niet goed aanstuurd.
Dit is het script:
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
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
<?php
if($login){
$query = mysql_query("SELECT * FROM " . $MySQL_table['leden'] . " WHERE gebruikersnaam='" . $_POST['gebruikersnaam'] . "'") OR die(mysql_error());
$list = mysql_fetch_object($query) OR die(mysql_error());
$gebruikersid = $list->id;
$gebruikersnaam = $_POST['gebruikersnaam'];
$tijd = $_POST['tijd'];
if($_POST['gebruikersnaam'] == "$list->gebruikersnaam" && $_POST['wachtwoord'] == "$list->wachtwoord" && $_POST['tijd'] != "-----------"){
if($tijd = "onbeperkt"){
setcookie ("gebruikersnaam", "$gebruikersnaam");
setcookie ("gebruikersid", "$gebruikersid");
}
else{
$tijd = 3600*$tijd;
setcookie ("gebruikersnaam", "$gebruikersnaam",time()+$tijd);
setcookie ("gebruikersid", "$gebruikersid",time()+$tijd);
}
echo("U bent SUCCESVOL ingelogd als <strong>" . $_COOKIE['gebruikersnaam'] . "!</strong>");
echo("<meta http-equiv=refresh content=0;URL=index.php>");
}
else{
echo"Uw wachtwoord komt niet overeen met uw gebruikersnaam!<br><a href=inloggen.php>terug</a>";
}
}
else{
?>
if($login){
$query = mysql_query("SELECT * FROM " . $MySQL_table['leden'] . " WHERE gebruikersnaam='" . $_POST['gebruikersnaam'] . "'") OR die(mysql_error());
$list = mysql_fetch_object($query) OR die(mysql_error());
$gebruikersid = $list->id;
$gebruikersnaam = $_POST['gebruikersnaam'];
$tijd = $_POST['tijd'];
if($_POST['gebruikersnaam'] == "$list->gebruikersnaam" && $_POST['wachtwoord'] == "$list->wachtwoord" && $_POST['tijd'] != "-----------"){
if($tijd = "onbeperkt"){
setcookie ("gebruikersnaam", "$gebruikersnaam");
setcookie ("gebruikersid", "$gebruikersid");
}
else{
$tijd = 3600*$tijd;
setcookie ("gebruikersnaam", "$gebruikersnaam",time()+$tijd);
setcookie ("gebruikersid", "$gebruikersid",time()+$tijd);
}
echo("U bent SUCCESVOL ingelogd als <strong>" . $_COOKIE['gebruikersnaam'] . "!</strong>");
echo("<meta http-equiv=refresh content=0;URL=index.php>");
}
else{
echo"Uw wachtwoord komt niet overeen met uw gebruikersnaam!<br><a href=inloggen.php>terug</a>";
}
}
else{
?>
<form name="login" method="post" action="inloggen.php">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Gebruikersnaam:</td>
<td width="50%"> <input name="gebruikersnaam" type="text" id="gebruikersnaam">
</td>
</tr>
<tr>
<td height="23">Wachtwoord:</td>
<td><input name="wachtwoord" type="password" id="wachtwoord"></td>
</tr>
<tr>
<td> <div align="left">Tijd Ingelogd:</div></td>
<td><select name="tijd" id="tijd">
<option selected>-----------</option>
<option value="1">1 Dag</option>
<option value="2">2 Dagen</option>
<option value="7">1 week</option>
<option value="14">2 weken</option>
<option value="31">1 maand</option>
<option value="61">2 maanden</option>
<option value="176">Half jaar</option>
<option value="356">Jaar</option>
<option value="onbeperkt">Onbeperkt</option>
</select></td>
</tr>
<tr>
<td><div align="right">
<input type="reset" name="Reset" value="Opnieuw">
</div></td>
<td><input name="login" type="submit" id="login2" value="Inloggen!"></td>
</tr>
</table>
</form>
Kunnen jullie ons helpen?
Alvast bedankt,
Karim
Verder kan je zo sql injections doen, want je stopt zo een post var in je query en je moet je vars buiten quotes halen, waar slaat:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php //kleurtjes
$_POST['gebruikersnaam'] == "$list->gebruikersnaam" && $_POST['wachtwoord'] == "$list->wachtwoord"
#en
setcookie ("gebruikersnaam", "$gebruikersnaam",time()+$tijd);
#op? Dat kan ook zo:
$_POST['gebruikersnaam'] == $list->gebruikersnaam && $_POST['wachtwoord'] == $list->wachtwoord
#en
setcookie ("gebruikersnaam", $gebruikersnaam,time()+$tijd);
?>
$_POST['gebruikersnaam'] == "$list->gebruikersnaam" && $_POST['wachtwoord'] == "$list->wachtwoord"
#en
setcookie ("gebruikersnaam", "$gebruikersnaam",time()+$tijd);
#op? Dat kan ook zo:
$_POST['gebruikersnaam'] == $list->gebruikersnaam && $_POST['wachtwoord'] == $list->wachtwoord
#en
setcookie ("gebruikersnaam", $gebruikersnaam,time()+$tijd);
?>
En ik denk dat ik wel weet waar $login vandaan komt, lees dit (@php.net) maar eens.
(beginnend in PHP)
Iemand anders heeft dit script aangeleverd en wij zijn het nu alleen aan het aanpassen.
Het cookie tijd gedeelte gaan we er denk ik uit halen...
Wat betreft het formulier:
Wat zit er fout met $login?
Ik ben onbekend met superglobals...
En hoe moet ik de sql injections anders doen ?
Moet worden:
if(isset($_POST['login'])){
Dankje!
Evert schreef op 29.04.2008 12:23:
Onder welke steen heb jij gelegen? Add_slashes is oud, en htmlspecialchars doet hier niks want ENT_QUOTES niet gezet, dus blijft ' nog altijd '. Gebruik gewoon mysql_real_escape_string.
Zie ook dit.
Gewijzigd op 01/01/1970 01:00:00 door --
Evert schreef op 29.04.2008 23:26:
Ik vroeg het maar ff, want ik las het in een gedateerd artikeltje, dus vvroeg ik me al af. Bedankt voor de tip :)
Ah, ik dacht dat je het als suggestie gaf.