login fout
Kan iemand me helpen ben volkomen nieuw in PHP land.
Heb al sinds een paar jaar een website met mijn stamboom erop nu wil ik graag een afgeschermd gedeelte hebben zodat ook de levende personen te zien zijn.
Nu vond ik op www.web-garden.be (http://www.web-garden.be/cursusphp/cursusphp.html) een cursus en een eenvoudig login script wat dan ook uitgelegd wordt.
Heb alles geinstalleerd en alles werkt tot het moment dat ik wil inloggen.
Na op aanmelden geklikt te hebben moet hij volgens het script naar een pagina gaan genaamd beveiligd.php het enigste wat hij doet is, dat de invulvelden verdwijnen.
Ook de knop "wissen" werkt niet?
Quote:
<h2>Inloggen</h2>
<p></p>
<form action="login.php" method="post">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td nowrap><label for="e"><span style="text-decoration: underline">E</span>-mailadres:</label></td>
</tr>
<tr>
<td><input accesskey="e" id="e" name="e" maxlength="255" size="30" type="text" value=""><br /></td>
</tr>
<tr>
<td nowrap><label for="w"><span style="text-decoration: underline">W</span>achtwoord:</label></td>
</tr>
<tr>
<td><input accesskey="w" id="w" name="w" maxlength="255" size="30" type="password" value=""><br /><br /></td>
</tr>
<tr>
<td align="center" nowrap>
<input class="knop" name="actie" type="submit" value="Inloggen">
<input class="knop" name="actie" type="submit" value="Wissen">
</td>
</tr>
</table>
</form>
Paswoord vergeten? Klik <a href="vergeten.php" target="_blank">hier</a>
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
83
84
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
<?php
/* MySQL-query voor het maken van de databasetabel:
CREATE TABLE `nieuwsbrief` (
`email` TINYTEXT NOT NULL
);
*/
// Het formulier alleen verwerken als er op een knop met de naam 'actie' is geklikt:
session_start();
if (isset($_POST['actie'])) {
$emailadres = $_POST['e']; // E-mailadres lezen uit formulierveld 'e'
$paswoord = $_POST['w']; // Paswoord lezen uit formulierveld 'w'
$emailadres = strip_tags($emailadres); // HTML-tags en PHP-code verwijderen
$paswoord = strip_tags($paswoord); //HTML-tags en PHP-code verwijderen
$paswoord = trim($paswoord); // Witruimte aan het begin en einde verwijderen
$emailadres = trim($emailadres); // Witruimte aan het begin en einde verwijderen
$melding = "Voer een geldig e-mail adres en paswoord in";
if (strlen($emailadres) > 50) {
$melding = "Fout e-mail adres ";
} else {
require_once('is_email.inc.php'); // Functie is_email() insluiten
if (is_email($emailadres)) { // E-mailadres controleren met de functie is_email()
$actie = $_POST['actie']; // Uit te voeren actie bepalen
if ($actie === "Inloggen" ) {
// SQL-query definiëren:
if ($actie == "Inloggen") {
$sql = "SELECT * FROM gebruikers WHERE email='" . $_POST["e"] ."' AND wachtwoord='". $_POST["w"]. "'"; }
// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen:
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die("Verbinding mislukt: " . mysql_error());
// Database 'test' selecteren:
mysql_select_db("mijn database") or die("Kon de database niet openen: " . mysql_error());
// Query zonder resultaatset uitvoeren:
$result = mysql_query($sql) or die("Query mislukt: " . mysql_error());
$row=mysql_fetch_array($result);
if(!empty($row)){
$email = $_POST["e"];
$wachtwoord = $_POST["w"];
session_register("email");
session_register("wachtwoord");
// Doorsturen naar beveiligde pagina
header("Location: beveiligd.php");
exit(); }
} if(empty($row)){
$melding = "U hebt geen geldige combinatie van e-mailadres en
wachtwoord opgegeven.<br> Indien u nog niet geregistreerd bent:<br>
<a href=\"registreer.php\">Hier registreren</a><br>";
}
// Databaseverbinding sluiten:
mysql_close($verbinding);
} else {
$emailadres = htmlentities($emailadres, ENT_QUOTES);
// Foutmelding afhankelijk van de lengte van het e-mailadres:
if (strlen($emailadres) < 1) {
$melding = "U moet een <strong>e-mailadres</strong> invoeren. ";
} else {
$melding = "<strong>$emailadres</strong> is geen geldig e-mailadres. ";
$melding .= "Verbeter het e-mailadres of voer een ander e-mailadres in. ";
}
}
}
} else {
$emailadres = "";
// Algemene instructies weergeven:
$melding = "Voer een geldig e-mailadres en paswoord in<br> ";
}
?>
/* MySQL-query voor het maken van de databasetabel:
CREATE TABLE `nieuwsbrief` (
`email` TINYTEXT NOT NULL
);
*/
// Het formulier alleen verwerken als er op een knop met de naam 'actie' is geklikt:
session_start();
if (isset($_POST['actie'])) {
$emailadres = $_POST['e']; // E-mailadres lezen uit formulierveld 'e'
$paswoord = $_POST['w']; // Paswoord lezen uit formulierveld 'w'
$emailadres = strip_tags($emailadres); // HTML-tags en PHP-code verwijderen
$paswoord = strip_tags($paswoord); //HTML-tags en PHP-code verwijderen
$paswoord = trim($paswoord); // Witruimte aan het begin en einde verwijderen
$emailadres = trim($emailadres); // Witruimte aan het begin en einde verwijderen
$melding = "Voer een geldig e-mail adres en paswoord in";
if (strlen($emailadres) > 50) {
$melding = "Fout e-mail adres ";
} else {
require_once('is_email.inc.php'); // Functie is_email() insluiten
if (is_email($emailadres)) { // E-mailadres controleren met de functie is_email()
$actie = $_POST['actie']; // Uit te voeren actie bepalen
if ($actie === "Inloggen" ) {
// SQL-query definiëren:
if ($actie == "Inloggen") {
$sql = "SELECT * FROM gebruikers WHERE email='" . $_POST["e"] ."' AND wachtwoord='". $_POST["w"]. "'"; }
// Constanten voor mysql_connect() insluiten:
require_once('mysql_connect.inc.php');
// Databaseverbinding openen:
$verbinding = mysql_connect(MYSQL_SERVER, MYSQL_GEBRUIKERSNAAM, MYSQL_WACHTWOORD) or die("Verbinding mislukt: " . mysql_error());
// Database 'test' selecteren:
mysql_select_db("mijn database") or die("Kon de database niet openen: " . mysql_error());
// Query zonder resultaatset uitvoeren:
$result = mysql_query($sql) or die("Query mislukt: " . mysql_error());
$row=mysql_fetch_array($result);
if(!empty($row)){
$email = $_POST["e"];
$wachtwoord = $_POST["w"];
session_register("email");
session_register("wachtwoord");
// Doorsturen naar beveiligde pagina
header("Location: beveiligd.php");
exit(); }
} if(empty($row)){
$melding = "U hebt geen geldige combinatie van e-mailadres en
wachtwoord opgegeven.<br> Indien u nog niet geregistreerd bent:<br>
<a href=\"registreer.php\">Hier registreren</a><br>";
}
// Databaseverbinding sluiten:
mysql_close($verbinding);
} else {
$emailadres = htmlentities($emailadres, ENT_QUOTES);
// Foutmelding afhankelijk van de lengte van het e-mailadres:
if (strlen($emailadres) < 1) {
$melding = "U moet een <strong>e-mailadres</strong> invoeren. ";
} else {
$melding = "<strong>$emailadres</strong> is geen geldig e-mailadres. ";
$melding .= "Verbeter het e-mailadres of voer een ander e-mailadres in. ";
}
}
}
} else {
$emailadres = "";
// Algemene instructies weergeven:
$melding = "Voer een geldig e-mailadres en paswoord in<br> ";
}
?>
<h2>Inloggen</h2>
<p></p>
<form action="login.php" method="post">
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td nowrap><label for="e"><span style="text-decoration: underline">E</span>-mailadres:</label></td>
</tr>
<tr>
<td><input accesskey="e" id="e" name="e" maxlength="255" size="30" type="text" value=""><br /></td>
</tr>
<tr>
<td nowrap><label for="w"><span style="text-decoration: underline">W</span>achtwoord:</label></td>
</tr>
<tr>
<td><input accesskey="w" id="w" name="w" maxlength="255" size="30" type="password" value=""><br /><br /></td>
</tr>
<tr>
<td align="center" nowrap>
<input class="knop" name="actie" type="submit" value="Inloggen">
<input class="knop" name="actie" type="submit" value="Wissen">
</td>
</tr>
</table>
</form>
Paswoord vergeten? Klik <a href="vergeten.php" target="_blank">hier</a>
Hans
http://php.net/manual/en/security.globals.php
Ik raad je aan om een ander script te zoeken omdat dit script sterk verouderd is en ook onveilig is (kan makkelijk gehackt worden). Als ik dan ook nog dingen zie als 'paswoord' wat een combinatie lijkt te zijn van het engelse password en het nederlandse wachtwoord vraag ik me al helemaal af wat voor prutser dit script gemaakt heeft.
Als je je script wilt repareren zet dan na session_start(); op regel 9:
var_dump($_POST);
var_dump($_SESSION);
Dan krijg je debug informatie te zien waar je script mee werkt.
je script heeft register globals nodig, zie: Ik raad je aan om een ander script te zoeken omdat dit script sterk verouderd is en ook onveilig is (kan makkelijk gehackt worden). Als ik dan ook nog dingen zie als 'paswoord' wat een combinatie lijkt te zijn van het engelse password en het nederlandse wachtwoord vraag ik me al helemaal af wat voor prutser dit script gemaakt heeft.
Als je je script wilt repareren zet dan na session_start(); op regel 9:
var_dump($_POST);
var_dump($_SESSION);
Dan krijg je debug informatie te zien waar je script mee werkt.
Gewijzigd op 29/09/2012 21:51:37 door Flip --
Weet iemand nog een goed login script?
Heb al enige scripts bekeken maar kom er niet goed uit.
Hans
http://ulogin.sourceforge.net/
of deze
http://usercake.com/
heb ze zelf niet geprobeerd, maar zagen er wel redelijk uit