08. september 2010 - 18:21 Der er 3 kommentarer og
1 løsning

header("location:...") virker ikke

Jeg har en fil http://christianjorgensen.be/redirect.php med denne simple kode:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<?
header( "location: http://christianjorgensen.be/redirect1.php" ); 
?>

Saa har jeg denne fil http://christianjorgensen.be/redirect1.php med denne kode:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head></head>
<body>
redirected<br/>
</body>
</html>

Det jeg forventer naar jeg aabner 'redirect' filen er at den skal aabne 'redirect1' filen og skrive "redirected" paa skaermen.  Men det sker ikke.

Hvis jeg fjerner DOCTYPE erklaeringen, altsaa saa 'redirect' filen reduceres saaledes:

<?
header( "location: http://christianjorgensen.be/redirect1.php" );
?>

saa bliver jeg redirected saaledes at jeg naar jeg aabner 'redirect' filen faar 'redirect1' filen at se med "redirected" skrevet paa skaermen.

Jeg er klar over at der ikke maa vaere noget output foer header, men kan det passe at der heller ikke maa vaere en DOCTYPE?  Eller er der et problem med min DOCTYPE erklaering?

Min webhost er One.com.
Avatar billede majbom Novice
08. september 2010 - 18:48 #1
der må INTET output være før en header() og derfor heller ikke doctype erklæringen...
08. september 2010 - 19:34 #2
Jeg har vaeret meget forvirret, hoert en masse om at "der maa ikke vaere noget foer header(), men samtidig ser jeg kodeeksempler saasom nedenstaaende for et login system hvor der er oceaner af kodelinier foer header().  Saa da jeg i morges tidlig (jeg har slaasset med det lige siden) skulle i gang med et login system indsatte jeg nedenstaaende kode (med navne o.s.v. tilpasset) i min html kode og fejlede.

Nu begynder tioeren maaske alligevel at falde.  Der maa gerne vaere kode foer header(), men ikke output til php serveren.  Det at der udveksles sql statements med phpmyadmin taeller saaledes ikke fordi det ikke er til php serveren, og den interne kommunikation saasom at tilkende vaerdier til variable og tage beslutninger i 'if' statements drejer sig heller ikke om output til serveren.

Kan jeg bede dig om to ting mere:

(1)  kommentere det ovenstaaende, isaer korrigere mig hvis jeg siger noget ukorrekt,

(2)  oprette et svar for points.

(3) (jeg kan ikke taelle) modtage min tak.

Her er kodeeksemplet jeg refererer til:

<?
$user = $_POST['user'];
$password = $_POST['password'];
$link = mysql_connect ('christianjorgensen.be.mysql', 'christianjoygen', 'dnyBKKbe') or die(mysql_error());
mysql_select_db('christianjoygen') or die('Could not select database');
$result = mysql_query("SELECT * FROM michael_members WHERE username = '" . $user . "' AND password = '" . $password . "'") or die(mysql_error());
$count = mysql_num_rows($result) ;
if($count==1)
{
  session_register("user");
  session_register("password");
  header("location:http://christianjorgensen.be/michael_loginsuccess.php");
}
else echo "Wrong Username or Password!";
mysql_close($link);
?>

Efter at jeg havde strippet min kode for alt html stof, inklusiv doctype, saa virker det faktisk.
Avatar billede majbom Novice
08. september 2010 - 19:58 #3
jeps, der må ikke være noget output til browseren før en header - du kan have al den php-kode du vil, så længe du ikke echo'er eller print'er :)
Avatar billede majbom Novice
08. september 2010 - 20:40 #4
tak for point :)
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