Avatar billede brianfrisch Nybegynder
02. oktober 2001 - 23:30 Der er 17 kommentarer og
1 løsning

Headers

Hej

Jeg har lige lavet mit første rigtige loginscript.

Når man indtaster sine oplysninger bliver man sendt til auth.php. Dette sker med en simpel <form method=\"post\" action=\"auth.php\">. auth.php tjekker om man har indtastet noget ordentligt, registrer sessionværdierne og via. en header bliver man så sendt til den side man søgte. Har man ikke indtastet sine ting ordentligt kommer der bare en hvid skærm hvor der står \"Du har lavet en fejl!\".

Nu vil jeg jo gerne have at siden auth bliver included i mit design, så jeg forsøgte mig med <form method=\"post\" action=\"<?php echo $PHP_SELF; ?>?side=auth\"> (den includerer altid side + .php i midten af siden)

Men når man logger ind så strander den på index.php?side=auth. Man bliver logget ind, men den går ikke videre. Headeren virker altså ikke.

Jeg har fået at vide at headere skal sendes før noget andet, men her har jeg jo brug for at headeren skal sendes inde i min side.

Så kommer spørgsmålet: \"Hvordan får jeg min header til at virke når jeg vil include auth.php i mit design?\"

På forhånd tak!

- Brian Frisch
Avatar billede coderdk Praktikant
02. oktober 2001 - 23:34 #1
Det kan du med Output Control:

  http://dk.php.net/manual/en/ref.outcontrol.php

=)
Avatar billede coderdk Praktikant
02. oktober 2001 - 23:35 #2
Du skal lave ob_end_clean() før du sender dine headers =)
Avatar billede speedy Nybegynder
02. oktober 2001 - 23:36 #3
Så skal du jo enten include filen inden alt det andet kode.

Ellers skal du til at bruge JavaScript f.eks.

echo \"<script>location.href=\'index.php\';</script>\";

/SpEeDy
Avatar billede speedy Nybegynder
02. oktober 2001 - 23:38 #4
coderdk>>Okay, den var smart! Den kendte jeg ikke ;)

/SpEeDy
Avatar billede wizprod.com Nybegynder
02. oktober 2001 - 23:40 #5
istedet for dette slamkode (sorry) så brug et hidden felt i formen:

<input type=\"hidden\" name=\"side\" value=\"auth\">
det bliver så automatisk sendt med!
Avatar billede brianfrisch Nybegynder
02. oktober 2001 - 23:43 #6
Nu vil du nok sidde og grine din r** i laser over mine fejl, men jeg skrev følgende:

      ob_end_clean()
      header(\"location: index.php\");

og det virker stadig ikke.
Avatar billede wizprod.com Nybegynder
02. oktober 2001 - 23:45 #7
Stadig slamkode, men!:

ob_start();
header(\"location: index.php\");
ob_end_flush();
Avatar billede wizprod.com Nybegynder
02. oktober 2001 - 23:46 #8
BTW du mangler en ; i dit sidste eks, brian
Avatar billede brianfrisch Nybegynder
02. oktober 2001 - 23:51 #9
Hmmm der sker ingenting med det der:
ob_start();
header(\"location: index.php\");
ob_end_flush();

Kan det være min php version? Næppe? PHP Version 4.0.6
Avatar billede coderdk Praktikant
03. oktober 2001 - 00:02 #10
<?
ob_start();
?>
hej med dig
<?
ob_end_clean();
header(\"location: http://slashdot.org/\");
?>
hej hej
<?
ob_end_flush();
?>
Avatar billede coderdk Praktikant
03. oktober 2001 - 00:03 #11
Det var noget vrøvl! Her:
<?
ob_start();
?>
hej med dig
<?
if (1 == 1) // et eller andet
{
  ob_end_clean();
  header(\"location: http://slashdot.org/\");
  ob_end_flush();
  exit;
}
?>
hej hej
<?
ob_end_flush();
?>
Avatar billede brianfrisch Nybegynder
03. oktober 2001 - 00:17 #12
Hej coderdk

Jeg satte
<?
ob_start();
?>
i toppen af min index.php

og
<?
ob_end_flush();
?>
i bunden af index.php

Når jeg går ind på index.php?side=admart (som loginsiden hedder) skal jeg et smut til auth.php og så tilbage til admart (det er det alt det her går ud på ;) !)

I auth.php har jeg sat
ob_end_clean();
header(\"location: index.php\");
ob_end_clean();

auth.php bliver includet i index.php ved: index.php?side=auth

Men af en-eller-anden grund gider den absolut ikke at sende den header... Det virker altså stadig ikke...

(det med at den går tilbage til den side den kom fra laver jeg senere)
Avatar billede brianfrisch Nybegynder
03. oktober 2001 - 00:21 #13
Hmm jeg lavede jo en lille fejl det, men selvom jeg skriver:
ob_end_clean();
header(\"location: index.php\");
ob_end_flush();

Istedet for

ob_end_clean();
header(\"location: index.php\");
ob_end_clean();

Så virker det stadig ikke...
Avatar billede coderdk Praktikant
03. oktober 2001 - 00:22 #14
Nu tror jeg jeg forstår hvad du vil! Det kan du desværre ikke - Jeg ville dele en almindelig side op i tre: en header, en content-del og en footer - header og footer skal være de samme altid - så kan du bare Require() dem på alle dine sider - auth.php skal du så bare require() i toppen af din side og den skal så (hvis folk ikke er logget ind) vise en loginform etc...
Avatar billede brianfrisch Nybegynder
03. oktober 2001 - 00:24 #15
Hmm ok... tak for hjælpen alligevel.

Jeg ved ikke helt hvad du mener med at require() den i toppen af siden.

Min side er delt op i
[venstre bar][indhold][højre bar]
Avatar billede coderdk Praktikant
03. oktober 2001 - 00:31 #16
Jeg mener bare at du bør tage den øverste del af HTML\'en som er ens for alle sider og kalde den header.php og alt det i bunden ligeså og kalde den footer.php, så en side ser sådan ud:

<? require(\"header.php\") ?>
<h2>Hitlisten</h2>
<p>Velkommen til hitlisten...</p>
<? require(\"footer.php\") ?>

Dem hvor der skal logges ind kan så se sådan ud:

<?
  require(\"auth.php\");
  require(\"header.php\");
?>
<h2>Hitlisten</h2>
<p>Velkommen til hitlisten...</p>
<? require(\"footer.php\") ?>

osv....
Avatar billede brianfrisch Nybegynder
03. oktober 2001 - 00:33 #17
Jeg har lige fået problemet løst.

Det der var meningen var, at jeg ville have at \"Du har lavet en fejl\"-teksten i følgende skulle indgå i designet:

if (...logged in) {
  header(\"location: loggedin.php\");
}else {
  echo(\"Du har lavet en fejl\");
}

Men jeg har lige fået at vide - og det er sygeligt simpelt og meget meget logisk - at det istedet for kan se sådan her ud:

if (...logged in) {
  header(\"location: loggedin.php\");
}else {
  header(\"location: fejl.php\");
}

Jeg beklager for at have spildt jeres tid... da det ser ud til at jeg har spildt mest af coderdk\'s tid, så får han point\'sne :)

Ellers tak for hjælpen gutter!
Avatar billede coderdk Praktikant
03. oktober 2001 - 00:41 #18
hheheh ok tak for points da =)
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