Hallo,
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?

<?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> ";

}


?>
<h2>Inloggen</h2>
<p><?php echo $melding; ?></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="<?php echo $emailadres; ?>"><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="<?php echo $paswoord; ?>"><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
je script heeft register globals nodig, zie: 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.
Bedankt Flip.
Weet iemand nog een goed login script?
Heb al enige scripts bekeken maar kom er niet goed uit.
Hans

Reageren