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

}


?>
dank bij voorbaat
dat komt omdat je dit boven je html moet zetten. session_start() en header() vinden output naar de browser niet leuk.

Dit is tevens zeer verouderd. Ik zou een ander script zoeken / zelf maken.
<?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> ";

}


?>
Doet het probleem zich nog voor?

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 ?> .

Zelfs geen spatie.
hier de volledige login.php


<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">


<head>
<title>-</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="../css/1.css" type="text/css" media="screen,projection" />
 <style type="text/css">
<!--
body {
	background-image: url(../images/backgrounds/body1a.jpg);
}
.stijl4 {
	color: #FF6600;
	font-size: 18px;
}
.stijl5 {
	color: #0066FF;
	font-weight: bold;
	font-size: 18px;
}
.stijl7 {font-size: 18px}
.stijl8 {color: #FF6600}
-->
</style></head>
 
<body>


<div id="container">
          <div id="header">
            <h1></h1>
            <h3 </h3>
          </div>
		  <ul id="nav">
            <li></li>
	      </ul>
		  <br class="clear" />
          <div id="sidebar">
            <h1>  Welkom<br />
            </h1>
            <br />

            <div class="sidebarfooter">               
              <div align="justify"> </div>
            </div>
            <div id="sidebar_bottom"><label></label></div>
          </div>
<div id="content"></div>
            <h2 align="center"></h2>
            </div></body></html>
           

<?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:

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('../loginnl/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 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> ";
    
}

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


Toevoeging op 30/12/2010 09:16:39:

heb het op gelost header mee bovenaan gezet bedankt
Mark Coenen op 30/12/2010 08:41:45

dat komt omdat je dit boven je html moet zetten. session_start() en header() vinden output naar de browser niet leuk.

Dit is tevens zeer verouderd. Ik zou een ander script zoeken / zelf maken.


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

* zoals hierboven gebruik $_SESSION['']
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();
}
?>

<html>
//de rest

<?php if(isset($melding) && melding != '')
      {
         echo $melding;
      }
?>

Verder moet er zoals andere zeggen nog veel gepoetst worden in de code.

Reageren