[PHP] Simpele header werkt niet

Pagina: 1
Acties:
  • 451 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
Ik ben bang dat ik gewoon iets kleins over het hoofd zie, maar ik ben er nu al zo lang mee bezig. Ik heb ook al gegoogled naar voorbeelden en ook de search leverde voldoende op, maar geen oplossing.


code:
1
2
3
4
5
6
7
8
9
10
11
12
 if ($_POST["Logincode"]) {
   require ("dbinfo.inc.php");
}
   $result=mysql_query("select * from `movie_users` where Logincode = '".$_POST["Logincode"]."'");
   if (mysql_num_rows($result)==1)
   {
    header('Location: overview.php');
    }
   else 
   {
    header('Location: http://www.w3.org/');
    }


Als ik niks mee stuur met 'Logincode' krijg ik mooi www.w3.org. Stuur ik een juiste logincode mee (ik weet dat omdat ik een "print mysql_num_rows($result)" boven de header heb gezet, met als uitkomst 1), dan gebeurt er helemaal niets...

Kan iemand me even uit de brand helpen?

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • lordsnow
  • Registratie: Maart 2000
  • Laatst online: 02:31

lordsnow

I know nothing

Bestaat overview.php wel?
Juist geschreven (hoofdletters)?
Werkt 't wel als je Location: http://www.jouwdomijn.nl/overview.php gebruikt?

Komt íe uberhaupt wel in overview.php? Mischien dat je iets kan printen ricthing scherm op de 1e regel.

Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
Jah overview.php bestaat. Daarbij heb ik er natuurlijk ook al een gewoon adres ingevuld.

Hij komt gewoon bij de header aan. Als ik er een print neerzet krijg ik de print gewoon te zien, dat is het vreemde!

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • Arjan90
  • Registratie: September 2005
  • Laatst online: 21-09 20:41
Probeer dit eens:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
 if ($_POST["Logincode"]) {
   require ("dbinfo.inc.php");
}
   $Logincode=$_POST['Logincode'];
   $result=mysql_query("select * from `movie_users` where Logincode='$Logincode'");
   if (mysql_num_rows($result)>0)
   {
    header('Location: overview.php');
     }
   else 
   {
    header('Location: http://www.w3.org/');
     }

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
thx sp!tf!re maar ook dat werkt niet.

Daarbij had ik al getest of er wel een uitkomst uit kwam door de mysql_nu_rows te printen. Er kwam gewoon een uitkomst uit.

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • Arjan90
  • Registratie: September 2005
  • Laatst online: 21-09 20:41
Heb je ook MSN? Dan kan ik je misschien daarover helpen ;) (ik heb deze problemen ook wel eens gehad, dus ik heb er in ieder geval ervaring mee).

Mijne is: arjanpeters{at}gmzone.nl

Modbreak: Leuk dat je het aanbiedt, maar als iedereen dit soort dingen zou aanbieden dan kan GoT net zo goed opdoeken, aangezien iedereen zijn problemen dan wel via de chat oplost. Probeer de discussie dus een beetje centraal te houden, dan hebben anderen er ook nog wat aan. :)

[ Voor 45% gewijzigd door NMe op 28-03-2006 23:04 ]

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


Acties:
  • 0 Henk 'm!

  • Arjan90
  • Registratie: September 2005
  • Laatst online: 21-09 20:41
Ik weet het denk ik.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
 if ($_POST["Logincode"]) {
   require ("dbinfo.inc.php");
   $Logincode=$_POST['Logincode'];
   $result=mysql_query("select * from `movie_users` where Logincode='$Logincode'");
   if (mysql_num_rows($result)>0)
   {
    header('Location: overview.php');
     }
   else 
   {
    header('Location: http://www.w3.org/');
     }
}


Je sloot namelijk de functie af, maar je stelt niet de voorwaarde (voor de resultaten uit de database) om eerst de POST in te stellen. Je hebt de functie dus eigenlijk te vroeg afgesloten, waardoor hij elke keer op die pagina zou checken of de code klopt.

Ik weet niet zeker of het klopt, maar het is in ieder geval veiliger ;)

[ Voor 190% gewijzigd door Arjan90 op 28-03-2006 22:15 ]

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

En geeft error_reporting(E_ALL) je ook geen hint in de goede richting?

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Bij location moet je altijd een volledige URL doen. Daarnaast is het soms handig om een sniffer te gebruiken om te kijken of bepaalde headers door Apache doorgestuurd worden.

Acties:
  • 0 Henk 'm!

  • Arjan90
  • Registratie: September 2005
  • Laatst online: 21-09 20:41
GlowMouse schreef op dinsdag 28 maart 2006 @ 22:13:
Bij location moet je altijd een volledige URL doen. Daarnaast is het soms handig om een sniffer te gebruiken om te kijken of bepaalde headers door Apache doorgestuurd worden.
Dit doe ik zelf ook nooit, ik werk gewoon met header("location: index.php"), heeft bij mij altijd gewerkt.

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

GlowMouse: Afaik is het bij een simpele 302 geen enkel probleem om niet de volledige URL op te geven. Alleen een path is voldoende. Veel browsers slikken dit gewoon (eerlijk gezegd ben ik er al jaren geen meer tegengekomen die dat niet doet), en zelfs Google heeft er geen problemen mee.

[ Voor 6% gewijzigd door AtleX op 28-03-2006 22:17 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
AtleX schreef op dinsdag 28 maart 2006 @ 22:17:
GlowMouse: Afaik is het bij een simpele 302 geen enkel probleem om niet de volledige URL op te geven. Alleen een path is voldoende. Veel browsers slikken dit gewoon (eerlijk gezegd ben ik er al jaren geen meer tegengekomen die dat niet doet), en zelfs Google heeft er geen problemen mee.
Een volledige URL is wel verplicht volgens de specificaties.

Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
Standaard staat errorreporting uit op die server. Met die php functie krijg ik een getal: 12047. Isdat een errorcode? Ik kan er niet meer info over vinden...

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
is die code echt alles wat je doet, of doe je boven of onder de code die je hier gepost heb nog meer dingen?

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
code:
1
2
3
4
5
6
7
8
9
10
11
<FORM action="loginscript.php" method="post">
<TABLE width="100%">
<TR>
<TD align="right"><span class="options2">Logincode:</span></TD>
<TD><INPUT border="1" type="text" name="Logincode" maxlength="20" size="30"></TD>
</TR>
</TABLE>
<BR>
<DIV align="center">
<input type="submit" name="submit" value="Login" class="loginbtn2"></DIV>
</FORM>


Dit is het form wat de logincode meestuurd. Verder is dit echt alles.

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
BasieP schreef op dinsdag 28 maart 2006 @ 22:27:
is die code echt alles wat je doet, of doe je boven of onder de code die je hier gepost heb nog meer dingen?
Inderdaad, het is noodzaak dat je _niks_ output voor je de header gestuurd hebt. Weet niet wat voor foutmelding je aan hebt staan (E_ALL hoop ik..), maar dan krijg je een error die die richting opwijst iig.

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
MrDirk, ik hoop dat dat forum (en de <html><body> tags enzo) ONDER de php code staat?

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
Dit is echt de enige code.

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
BasieP schreef op dinsdag 28 maart 2006 @ 22:38:
MrDirk, ik hoop dat dat forum (en de <html><body> tags enzo) ONDER de php code staat?
Jah. Daarbij ik kan de Logincode gewoon printen op de 'loginscript.php' pagina. Hij wordt dus gewoon goed meegegeven.

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
ik geloof dat je dan iets anders fout doet. maak eens een test case, en post al je files eens als source (dus phps oid)
MrDirk schreef op dinsdag 28 maart 2006 @ 22:40:
[...]
Jah. Daarbij ik kan de Logincode gewoon printen op de 'loginscript.php' pagina. Hij wordt dus gewoon goed meegegeven.
maar na printen kan je geen headers meer versturen :/

[ Voor 37% gewijzigd door BasieP op 28-03-2006 22:42 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
http://afasystemsinc.com/testcase.rar

Hier staan de twee files in.

[ Voor 7% gewijzigd door MrDirk op 28-03-2006 22:43 ]

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
BasieP schreef op dinsdag 28 maart 2006 @ 22:41:

[...]

maar na printen kan je geen headers meer versturen :/
Print was enkel om even te testen of de waarden goed doorgegeven werden...

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • ReLight
  • Registratie: Augustus 2001
  • Laatst online: 16-09 09:32

ReLight

echo("What Now ? !")

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ($_POST["Logincode"]) {
    require ("dbinfo.inc.php");
    $result = mysql_query("select * from `movie_users` where Logincode = '".$_POST["Logincode"]."'");
    if (mysql_num_rows($result) == 1) {
        header('Location: overview.php');
    }

} else {
    header('Location: http://www.w3.org/');
}
?>

Je kan voor de eenvoud de statements beter scheiden op het hoogste niveau, dus op de if ($_POST["Logincode"]) {

Ik heb het even getest zonder de db includes en db query, en dat werkt goed, als het dan bij je nog niet werkt dan doet de dbinfo.inc.php wellicht iets met je headers. Dan moet je gaan sniffen zoals eerder gemeld hierboven.

[ Voor 31% gewijzigd door ReLight op 28-03-2006 23:01 . Reden: updateje ]

Mijn zoon & dochter zijn de toekomst, de rest is tijdsvermaak. Home assistant & & Nibe S2125-12/SMO-S40, RMU-s40 & Tado - Volvo C40 ER, SE


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
$db = mysql_connect('host','username','password');
mysql_select_db('database');

Dit is alles wat in dbinfo.inc.php staat.

Deze gegeven in loginscript.php zetten maakt ook geen verschil.

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

  • ReLight
  • Registratie: Augustus 2001
  • Laatst online: 16-09 09:32

ReLight

echo("What Now ? !")

Let op dat in mijn code de brackets anders staan dan in de jouwe. Ik heb het met inderstaande getest+ je html stukje, je bent dan in ieder geval weet een stukje verder in de fault-break-down:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ($_POST["Logincode"]) {
    //require ("dbinfo.inc.php");
    //$result = mysql_query("select * from `movie_users` where Logincode = '".$_POST["Logincode"]."'");
    //if (mysql_num_rows($result) == 1) {
        header('Location: http://www.apache.org/');
    //}

} else {
    header('Location: http://www.w3.org/');
}
?>

Mijn zoon & dochter zijn de toekomst, de rest is tijdsvermaak. Home assistant & & Nibe S2125-12/SMO-S40, RMU-s40 & Tado - Volvo C40 ER, SE


Acties:
  • 0 Henk 'm!

  • EdwinV
  • Registratie: Januari 2004
  • Laatst online: 27-08 09:44
ReLight schreef op dinsdag 28 maart 2006 @ 23:13:
Let op dat in mijn code de brackets anders staan dan in de jouwe. Ik heb het met inderstaande getest+ je html stukje, je bent dan in ieder geval weet een stukje verder in de fault-break-down:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ($_POST["Logincode"]) {
    //require ("dbinfo.inc.php");
    //$result = mysql_query("select * from `movie_users` where Logincode = '".$_POST["Logincode"]."'");
    //if (mysql_num_rows($result) == 1) {
        header('Location: http://www.apache.org/');
    //}

} else {
    header('Location: http://www.w3.org/');
}
?>
Bedenk wel dat if($_POST['Logincode']) een notice zal gooien als het item niet bestaat in de $_POST array. Beter is om in dit geval isset te gebruiken:

PHP:
1
2
3
4
5
6
7
<?php
if(isset($_POST['Logincode'])){
   // controleer code
} else {
   // Geef foutmelding
}
?>

Acties:
  • 0 Henk 'm!

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 06:29
Ik loop hier ook vaak tegenaan; zet ik een
PHP:
1
die();

eronder, dan gaat zo'n header wel altijd goed.

[ Voor 5% gewijzigd door StevenK op 29-03-2006 09:21 ]

Was advocaat maar vindt het juridische nog steeds leuk


Acties:
  • 0 Henk 'm!

  • MrDirk
  • Registratie: Januari 2002
  • Laatst online: 04-07-2023
Beste mensen,
Bedankt voor al jullie antwoorden. Helaas is het me niet gelukt het werkend te krijgen. Vandaar deze workaround, misschien dat ooit iemand er nog wat aan heeft.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?
if(isset($_POST['Logincode'])){
require ("dbinfo.inc.php");
$result=mysql_query("select * from `movie_users` where Logincode = '".$_POST["Logincode"]."'");
    if (mysql_num_rows($result)==1) {
    print "goede code";
    print "<script language=\"Javascript\">";
    print "function forwardadmin(){ location.href=\"overview.php\" }";
    print "</script>";
    }
    else {
    print "foute code";
    print "<script language=\"Javascript\">";
    print "function forwardadmin(){ location.href=\"http://diweb.nl\" }";
    print "</script>";
    }
    }
else {
    print "geen code";
    print "<script language=\"Javascript\">";
    print "function forwardadmin(){ location.href=\"http://fok.nl\" }";
    print "</script>";
    }

?>

<script language="javascript">
<?
echo "setTimeout('forwardadmin()',10);"; 
?>
</script>

"We do not first see, then define, we define first and then see" (Lippmann)


Acties:
  • 0 Henk 'm!

Verwijderd

probeer voor de zekerheid output buffering te gebruiken (dwz, ob_start() _bovenaan_ je script en ob_end_flush() onderaan je script)
Pagina: 1