ik had een inlog formulier dit werkte maar na het te plaatsen binnen html site kreeg ik diverse fout meldingen.
De volgende fout weet ik geen raad mee
Warning: Cannot modify header information - headers already sent by (output started at /homez.99/smartinv/www/loginnl/login.php:13) in /homez.99/smartinv/www/loginnl/login.php on line 115
$actie = $_POST['actie']; // Uit te voeren actie bepalen
if ($actie === "Inloggen" ) {
// SQL-query definiëren:
if ($actie == "Inloggen") {
$sql = "SELECT * FROM intresse 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("smartinvpol") 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> ";
<?php
$actie = $_POST['actie']; // Uit te voeren actie bepalen
if ($actie === "Inloggen" ) {
// SQL-query definiëren:
if ($actie == "Inloggen") {
$sql = "SELECT * FROM intresse 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("smartinvpol") 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> ";
In login.php stuur je html naar de gebruiker. Lijn 13 wordt vermeld.
Toon eens het begin van login.php
EDIT
Pas ook heel goed op met includes.
Includes met functies, configuratiegegevens, ...
Daar mag niets van html los lopen.
Er mag niets staan vóór <?php .
Er mag niets staan na ?> .
Zeg
Houd jij de mensen hun paswoord zomaar bij op je database, zonder enige encryptie?
Herinner me er aan om nooit te registreren op een site waar je aan werkt.
Er is inderdaad van alles mis met dit script.
Zoek een ander!
Sorry hoor, no offence, maar hoe meer ik kijk ...
Dit is precies Fawlty Towers. Alles wat fout kan lopen, wordt hier fout gedaan.
Ik hou dit script bij als voorbeeld van alles wat men niet hoort te doen.
* mysql injection mogelijk
* gebruik geen * dit is een wildcard selecteer wat je wilt
* controleren of er op submit is gedrukt doe je met $_SERVER['REQUEST_METHOD'] == 'POST'
* waarom mysql_close($verbinding); ?
Eigenlijk is het heel simpel, je moet je gehele php code bovenin zetten.
Die variabele die een foutmelding moet geven die zet je alleen in het stukje html.
Daar mis je een controlle op.
dus:
bovenin je pagina:
<?php
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// hier alle dingen die gecontroleerd moeten worden, database e.d.
header('Location: beveiligd.php');
exit();
}
?>