Php error?

Status
Niet open voor verdere reacties.

// Robert G. ^^

Terugkerende gebruiker
Lid geworden
20 dec 2005
Berichten
1.590
Hallo,

Ik ben bezig met een php script en kom niet uit deze error. Wie kan me helpen!?

Klik

Kom uit onderstaand script;

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<?php session_start(); include("config.php"); if (!empty($_POST)) { $query = "SELECT username, password, url FROM users WHERE username = '" . $_POST["username"] ."' AND password = '". $_POST["password"] ."'"; $result = mysql_query($query) or die("FOUT: " . mysql_error()); if (mysql_num_rows($result) > 0) { while (list($username, $password, $url ) = mysql_fetch_array($result)) { $_SESSION["username"] = $username; $_SESSION["url"] = $url; header("Location: $url"); exit(); } } } else {?>
 
</head>

<body>

<b>Klanten Login</b>
<form name="form1" method="post" action="login.php">
  <table border="0" cellpadding="0" cellspacing="0" width="50%">

    <tbody>

      <tr>

        <td width="22%"><font face="Verdana" size="2">Gebruikersnaam</font></td>

        <td width="78%"><input name="username" id="username" size="15" maxlength="25" type="text"></td>

      </tr>

      <tr>

        <td><font face="Verdana" size="2">Wachtwoord</font></td>

        <td><input name="password" id="password" size="15" maxlength="25" type="password"></td>

      </tr>

      <tr>

        <td>&nbsp;</td>

        <td><input name="Submit" value="Login" type="submit"></td>

      </tr>

    </tbody>
  </table>

</form>

<?php }?>
</body>
</html>
 
session_start(); moet je helemaal aan het begin doen, dus ook boven html
 
Dankje, opgelost!

Hij heeft het eerst wel gedaan, vraag me ook af hoe dat veranderd is:confused: Maar hij werkt weer!:thumb:
 
Zeker error_reporting niet op E_ALL staan :rolleyes:

Deze code gaat je geheid een foutmelding op leveren.
Daarnaast is het voor je eigen leesbaarheid beter om de code onder elkaar te zetten.

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<?php
session_start();
include("config.php");

if (!empty($_POST)) {
  $query = "SELECT username, password, url
            FROM users
            WHERE username = '" . $_POST["username"] ."'
            AND password = '". $_POST["password"] ."'";
  $result = mysql_query($query) or die("FOUT: " . mysql_error());
  if (mysql_num_rows($result) > 0) {
    while (list($username, $password, $url ) = mysql_fetch_array($result)) {
      $_SESSION["username"] = $username;
      $_SESSION["url"] = $url;
      header("Location: $url");
      exit();
    }
  } 
} else {
?>
</head>
Ik weet niet hoe je hem nu verbeterd hebt maar als je alleen session_start(); boven het HTML hebt gezet dan ben je er nog niet.
 
En waarom gaat dat een foutmelding opleveren? Ik heb het script niet zelf gemaakt, alleen aangepast.
 
PHP:
header("Location: $url");
Die regel gaat je error veroorzaken als je de HTML er boven laat.

De functie header(); is zo gemaakt dat er boven geen output mag worden gegeven.
In dit script is het nog makkelijk op te lossen zonder het omzeiltrucje ob_start(); en ob_flush(); gebruikt.

Gewoon het PHP eerst behandelen :)
PHP:
<?php
session_start();
include("config.php");

if (!empty($_POST)) {
  $query = "SELECT username, password, url
            FROM users
            WHERE username = '" . $_POST["username"] ."'
            AND password = '". $_POST["password"] ."'";
  $result = mysql_query($query) or die("FOUT: " . mysql_error());
  if (mysql_num_rows($result) > 0) {
    while (list($username, $password, $url ) = mysql_fetch_array($result)) {
      $_SESSION["username"] = $username;
      $_SESSION["url"] = $url;
      header("Location: $url");
      exit();
    }
  } 
} else {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

Ga je echter dit bestand includen op een pagina waar je dus eerst output geeft, zeg maar:
PHP:
<?php
echo 'Welkom '. $_SESSION['user'];
include("login.php");
?>
Dan krijg je weer een error. Het beste is dus om dat te vermijden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan