Avatar billede naquer Nybegynder
25. februar 2004 - 17:54 Der er 6 kommentarer og
1 løsning

Underlig fejlmeddelse

Hej

Jeg har en php side, til at tjekke om nogle forskellige betingelser går op:

<?php

$brugernavn = $_REQUEST['brugernavn'];
$password = $_REQUEST['password'];
$submit = $_REQUEST['submit'];
$opret = $_REQUEST['opret'];

if(isset($opret)) {
  header("location:needlogin.php");
} elseif($brugernavn == "" OR $password == "") {
  echo "<div id='red_light'>Begge felter skal udfyldes</div>";
} else {
  mysql_connect("localhost", "root");
  mysql_select_db("news");

  $result_user = mysql_query("select brugernavn from users where brugernavn = '$brugernavn'")
  or die('Mysql error');
  $result_password = mysql_query("select password from users where password = '$password'")
  or die('Mysql error');

  $array_user = mysql_fetch_assoc($result_user);
  $array_password = mysql_fetch_assoc($result_password);

if($array_user['brugernavn'] == $brugernavn && $array_password['password'] == $password) {
  $_SESSION['user'] = $array_user['brugernavn'];
  echo "{$_SESSION['user']}";
} else {
  echo "<div id='red_light'>Brugernavn eller adgangskode er forkert</div>";
}
}

?>

Det virker helt perfekt, undtagen hvis jeg trykker på submit knappen. Så skriver den nemlig følg:

Warning: Cannot add header information - headers already sent by (output started at /home/mikkel/webs/check.php:16) in /home/mikkel/webs/login/check.php on line 9

Siden er inkluderet på en anden side. Hvordan kan det være at den skriver det?
Avatar billede pchris Nybegynder
25. februar 2004 - 18:00 #1
Det betyder at du i /home/mikkel/webs/check.php linie 16 har genereret noget output og PHP derfor har sendt HTTP headers, men nu i linie 9 i denne fil forsøger du at sende headers igen med kaldet header("location:needlogin.php"); - det må man ikke.

Du kan nok løse det ved at checke $_REQUEST['opret'] tidligt - allerede i webs/check.php inden du genererer output.
Avatar billede naquer Nybegynder
25. februar 2004 - 20:41 #2
Jeg forstår ikke helt dit svar. Må jeg ikke bruge header to steder på en side?
På den side hvo jeg inkluderer ovenstående fil, har jeg i toppen startet session ( session_start(); )Mener du at det kan være grunden til fejlen?
Avatar billede naquer Nybegynder
25. februar 2004 - 20:48 #3
Siden hvorpå jeg inkluderer filen ser således ud:

<?php
session_start();
?>
<html>
<head>
<title>Siden over alle sider</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>
<div id="hoejre">

<?php
include("login/check.php");
?>

</div>
<div id="title">

<h2><div class="overskrift">Siden over alle sider</div></h2>
</div>

<div id="indhold">
</div>

<?php
include("sider/venstremenu.html");
?>

</body>
</html>

Hvorfor er det så et problem at der midt på siden kommer en header?
Avatar billede naquer Nybegynder
25. februar 2004 - 21:36 #4
Ingen der kan svare mig på det?
Avatar billede gustav-olsen Nybegynder
25. februar 2004 - 21:58 #5
Det betyder bare at din header() skal stå _FØR_ du begynder at generere output til skærmen. Altså før din HTML kode og før du skriver tekst ud med PHP (echo, print fx.)..

-Gustav Olsen
Avatar billede pchris Nybegynder
26. februar 2004 - 08:38 #6
Nemlig. Du kan f.eks. skrive den lige efter session_start();
Altså noget i retning af:
<?php
session_start();
$opret = $_REQUEST['opret'];

if(isset($opret)) {
  header("location:needlogin.php");
}
?>
Avatar billede naquer Nybegynder
26. februar 2004 - 14:53 #7
Det har jeg ikke mulighed for, eftersom headeren og resten, skal være omringet af en <div>  er der andet jeg kan gøre?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester