Vinnaren i pepparkakshustävlingen!
2004-01-28, 02:07
  #1
Medlem
daemons avatar
får detta meddelande när jag försöker använda min loginsida:

Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\test\conn.php:16) in c:\inetpub\wwwroot\test\index.php on line 17

Här är min index sida:

Kod:
<?php  
session_start(); // Alltid överst på sidan  
 
include "conn.php"; // Databasanslutningen  
 
// Inloggning  
if (isset($_POST['submit'])){  
   
  $sql = "SELECT id FROM members  
         WHERE user='{$_POST['user']}'  
         AND pass='{$_POST['passwd']}'";  
  $result = mysql_query($sql) or die("SQL: $sql <br>".mysql_error());  
   
  // Hittades inte användarnamn och lösenord  
  // skicka till formulär med felmeddelande  
  if (mysql_num_rows($result) == 0){  
    header("Location: index.php?badlogin=");  
    exit;  
  }  
   
  // Sätt sessionen med unikt index  
  $_SESSION['sess_id'] = mysql_result($result, 0);  
  $_SESSION['sess_user'] = $_POST['user'];  
  header("Location: welcome.php");  
  exit;  
}  
 
// Utloggning  
if (isset($_GET['logout'])){  
  session_unset();  
  session_destroy();  
  header("Location: index.php");  
  exit;  
}  
?>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
<head>  
<meta http-equiv="Content-Type"  
  content="text/html; charset=iso-8859-1">  
<title>Index</title>  
</head>  
<body>  
<?php  
 
// Om inte inloggad visa formulär, annars logga ut-länk  
if (!isset($_SESSION['sess_user'])){  
 
  echo "<h3>Logga in</h3>\n";  
   
  // Visa felmeddelande vid felaktig inloggning  
  if (isset($_GET['badlogin'])){  
    echo "Fel användarnamn eller lösenord!<br>\n";  
    echo "Försök igen!\n";  
  }  
   
?>  
<form action="index.php" method="post">  
Användarnamn:<br>  
<input type="text" name="user"><br>  
Lösenord:<br>  
<input type="password" name="passwd"><br>  
<input type="submit" name="submit" value="Logga in">  
</form>  
Inte medlem ?<br>  
<a href="register.php">Registera dig</a>  
<?php  
 
} else {  
 
  echo "<a href=\"index.php?logout=\">Logga ut</a>\n";  
 
}  
 
?>  
</body>  
</html> 


och här är min conn sida:

[code]

<?php


$mysql_server = "localhost";
$mysql_user = "(user)";
$mysql_password = "(password)";
$mysql_database = "test";

$conn = mysql_connect($mysql_server, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $conn);


?>



Någon som ser vilket fel jag gjort?
Citera
2004-01-28, 02:52
  #2
Medlem
oGGos avatar
Jag kan hjälpa dig s¨å långt att tala om för dig att felet ligger här:
[KOD]
header("Location: index.php?badlogin=");
[/KOD]

Jag är inte php utan asp-kille så jaja, någon annan får tala om för dig vad detta betyder!

/oGGo, tyvärr denna gång utan så mycket information!
Citera
2004-01-28, 09:25
  #3
Medlem
xatrixs avatar
Citat:
Ursprungligen postat av http://se2.php.net/header
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

Där har du lösningen, troligtvis nån tom rad i includefilen.
Citera
2004-01-30, 22:42
  #4
Medlem
Bleeps avatar
Citat:
Ursprungligen postat av oGGo
Jag kan hjälpa dig så långt att tala om för dig att felet ligger här:
[KOD]
header("Location: index.php?badlogin=");
[/KOD]
Lite banal gissningslek från min sida eftersom php är en ny gren för mig och normalt något jag överlåter åt bättre skickade män... men borde inte de tre platser där du har kodning börjande med just header - oGGo nämner en av dem - innehålla enkla citattecken dvs se ut: header('Location: index.php?badlogin='); i stället för header("Location: index.php?badlogin="); ??? De gånger jag lattjat med php-script har jag ofta glömt den detaljen...
Citera
2004-01-30, 23:31
  #5
Medlem
/dev/jesuss avatar
Lägg till denna rad högst upp på sidan, före session_start, så fixar det sig (sätter på output buffring):

Kod:
ob_start();

OBS. För att undvika detta problem i fortsättningen så måste alla berörda dokument börja med ett php-stycke.

Alltså, de första tecknen i hela dokumentet måste vara "<?php ", det får inte vara en tom rad före denna rad, det får inte vara html före denna rad.

För att göra det så enkelt för dig som möjligt så borde du inkludera en "preprocess.php" eller nåt före du gör någonting överhuvudtaget.

Då skulle alltså alla dokument börja med följande rad:

Kod:
<?php require("preprocess.php"); ?>

preprocess.php skulle i sin tur se ut såhär:

Kod:
<?php
ob_start();
session_start();

....nånting annat kanske, tex inkludering av conn.php

?>
Citera
2004-01-31, 13:36
  #6
Medlem
daemons avatar
ok thx, det var en tom rad som störde scriptet , men det är fixat nu
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback