[php] if check werkt niet?

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik heb van alles geprobeerd om iets te checken maar alles werkt nie :{

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        if ($_POST['newline'] == "<your message>")
        {
            header("location: details.php?item=" . $_POST['detailid']);
        }
        
        if ($_POST['username'] == "<your username>")
        {
            header("location: details.php?item=" . $_POST['detailid']);
        }

        if (strlen($_POST['username']) < 5)
        {
            header("location: details.php?item=" . $_POST['detailid']);
        }

        if (strlen($_POST['newline']) < 5)
        {
            header("location: details.php?item=" . $_POST['detailid']);
        }


dit moet dus tegenhouden dat de user een 'standaard' bericht kan posten maar dit werkt voor geen meter :{ hoe kan dat :?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

goed, debuggen dan maar
1/ zijn de strings aan elkaar gelijk? (weet je dat zeker? geen trailing spaces?)

Doet iets met Cloud (MS/IBM)


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
probeer eens een exit() na je headers :?
en oh ja, gebruik strcmp of stricmp voor stringvergelijkingen

[ Voor 45% gewijzigd door SWfreak op 20-02-2003 21:58 ]


Verwijderd

Topicstarter
D2k schreef op 20 februari 2003 @ 21:58:
goed, debuggen dan maar
1/ zijn de strings aan elkaar gelijk? (weet je dat zeker? geen trailing spaces?)
Ik heb echt alles gedebugged, zelfs met phpinfo... in mijn input staat psies "<your message>" etc... ik snap er echt geen flikker van :?

Verwijderd

Topicstarter
print_r($_POST); geeft

code:
1
2
3
4
5
6
7
Array
(
    [detailid] => 1094
    [username] => <your username>
    [newline] => <your message>
    [submit] => Add line
)

Verwijderd

location header moet altijd een volledige url bevatten :)

Daarnaast begrijp ik niet waarom je niet elseif of liever nog een or gebruikt in de if, aangezien alles toch hetzelfde doet (een redirect).

Verwijderd

Topicstarter
Nelske, location header werkt in mijn geval altijd zonder volledige url maar dat is niet echt het probleem... ik zal er eens 'exit' voor zetten.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:50
Als je header ff tijdelijk vervangt door een error fuctie, (bv door echo aan te roepen met "Error: not allowed" ofzo). Krijg je dan wel iets te zien. Maar zo te zien doet de if statement zn wel wel. Misschien is de header wel fout, maar daar krijg je geen error over. Staat error_reporting wel op E_ALL.

Volgens de PHP manual moet je altijd het absolute URI meegeven, dus inclusief http:// ervoor.

[ Voor 3% gewijzigd door Sybr_E-N op 20-02-2003 22:16 . Reden: te laat, ik moet sneller typen. ]


Verwijderd

Heb het nog even voor je nagekeken en voor HTTP1.1 moet de location header wel degelijk een volledige absolute URL meegeven. Dat sommige browsers er nou mee acoord gaan als het een relatieve URL is....

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (strcmp($_POST['newline'],"<your message>") == 0){
    header("location: details.php?item=" . $_POST['detailid']);
}

if (strcmp($_POST['username'],"<your username>") == 0){
    header("location: details.php?item=" . $_POST['detailid']);
}

if (strlen($_POST['username']) < 5){
    header("location: details.php?item=" . $_POST['detailid']);
}

if (strlen($_POST['newline']) < 5){
    header("location: details.php?item=" . $_POST['detailid']);
}
:?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Verwijderd schreef op 20 February 2003 @ 22:16:
Heb het nog even voor je nagekeken en voor HTTP1.1 moet de location header wel degelijk een volledige absolute URL meegeven. Dat sommige browsers Praktisch alle browsers er nou mee acoord gaan als het een relatieve URL is....

Verwijderd


Dat is dus een reden om het maar niet op de juiste manier te doen? :/

Verwijderd

Topicstarter
Verwijderd schreef op 20 February 2003 @ 22:16:
Heb het nog even voor je nagekeken en voor HTTP1.1 moet de location header wel degelijk een volledige absolute URL meegeven. Dat sommige browsers er nou mee acoord gaan als het een relatieve URL is....
:'( best vaag en denk idd dat het ook daar in zit, maar normalite werkt het pfect...zonder een of andere error en ook redirectie perfect.. maar alleen met dit scriptje nie :{ ... mja ik heb er gewoon een else aan toegevoegd (zoals je al opmerkte elseif en eindigen op een else :P

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:50
Iets kortere manier.

PHP:
1
2
3
if ((($_POST['newline'] == '<your message>') || ($_POST['newline'] < 5)) || 
    (($_POST['username'] == '<your message>') || ($_POST['username'] < 5)))
  header('location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.'details.php?item='.$_POST['detailid']);


Edit: && vervangen door ||, want zodra ergens iets fout is -> quiten. Zonder testen direct uit hoofd typen geeft soms schoonheidsfoutje. :)

[ Voor 59% gewijzigd door Sybr_E-N op 20-02-2003 22:38 ]


Verwijderd

Verwijderd schreef op 20 February 2003 @ 22:21:

[...]

Dat is dus een reden om het maar niet op de juiste manier te doen? :/
Neuh, maar anders gingen stevenen we recht op een 'MSIE zuigt' flamewar af :P

Verwijderd

Sybr_E-N schreef op 20 februari 2003 @ 22:23:
Iets kortere manier.

[knip code]


Juist :)
Verwijderd schreef op 20 februari 2003 @ 22:23:
[...]

Neuh, maar anders gingen stevenen we recht op een 'MSIE zuigt' flamewar af :P
Hoe kom je daar nou bij? :)
Omdat ik mod NOS ben ofzo :+

Dat sommige browsers het wel doen, is alleen maar handig. Het betekent echter ook dat men er soms ten onrechte van uit gaat, dat men ook op de juiste manier bezig is ;)

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Sybr_E-N schreef op 20 February 2003 @ 22:23:
Iets kortere manier.

PHP:
1
2
3
if ((($_POST['newline'] == '<your message>') || ($_POST['newline'] < 5)) && 
    (($_POST['username'] == '<your message>') || ($_POST['username'] < 5)))
  header('location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.'details.php?item='.$_POST['detailid']);
Volgens mij moet die logische AND een logische OR zijn:
PHP:
1
2
3
if ((($_POST['newline'] == '<your message>') || ($_POST['newline'] < 5)) || 
    (($_POST['username'] == '<your message>') || ($_POST['username'] < 5)))
  header('location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.'details.php?item='.$_POST['detailid']);

Verder vindt ik je location berekening heel netjes :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok ik ga de goede location eens verbouwen in me site tnx ppl

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

xtentic
Een tipje voor voortaan debuggen: probeer uit te zoeken waar de fout zit, door de code in reepjes te knippen.

Als het werkelijk aan de location header ligt (wat volgens mij ook met een hoofdletter L moet ;)), dan had je daar eigenlijk gewoon achter kunnen komen door je code bijvoorbeeld zo om te bouwen:

PHP:
1
2
3
4
if ($_POST['newline'] == "<your message>") {
   echo "YAY! de 'if' doet ut!";
}
// [snip]

Als dat vervolgens werkt, weet je dus dat het niet aan de if ligt, maar aan iets wat er tussen de accollades staat. In dit geval de Location header dus.

Vervolgens zou je dan even in de manual kunnen kijken, en een Header call kunnen kopieren om daar neer te zetten waar jij er nu 1 hebt staan, want eentje uit de manual werkt ongetwijfeld. Als die wel werkt, ga je vervolgens bekijken wat de verschillen zijn tussen die van jou, en die van de manual. Verder is het dan een fluitje van een cent ;)

[ Voor 3% gewijzigd door drm op 21-02-2003 09:11 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

HTTP-Headers zijn hoofdletter ongevoelig, voor zover ik me uit de RFC herinner :)
Het is natuurlijk wel zo netjes ze zo over te nemen als ze in de RFC staan (met hoofdletter L)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
drm; jij hebt helemaal gelijk, alleen mis je een stukje volgens de manual moet het officieel zelfs

code:
1
header('location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.'details.php?item='.$_POST['detailid']);


zijn, en ACM nee hoofdletter gevoelig moet het idd zijn maar werkt bij mij al jaren :P zonder een hoofdletter L ;)

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:50
Verwijderd schreef op 21 February 2003 @ 20:17:
drm; jij hebt helemaal gelijk, alleen mis je een stukje volgens de manual moet het officieel zelfs

code:
1
header('location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.'details.php?item='.$_POST['detailid']);
Volgens mij heb ik dat stukje al eens eerder in dit topic voorbij zien komen. :)
(Zou ik dat ook uit de manual hebben?)

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Verwijderd schreef op 21 februari 2003 @ 20:17:
zijn, en ACM nee hoofdletter gevoelig moet het idd zijn maar werkt bij mij al jaren :P zonder een hoofdletter L ;)
offtopic:
Yuk @ nederlands... Case sensitive bedoel je dus...

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
PHP:
1
print 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/';

Levert dat niet een / teveel op op het eind? ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 21 februari 2003 @ 20:17:
drm; jij hebt helemaal gelijk, alleen mis je een stukje volgens de manual moet het officieel zelfs

code:
1
header('location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.'details.php?item='.$_POST['detailid']);


zijn, en ACM nee hoofdletter gevoelig moet het idd zijn maar werkt bij mij al jaren :P zonder een hoofdletter L ;)
Nee, HTTP headers moeten case insensitive behandeld worden, staat zo in de RFC van het HTTP protocol, 300 % zeker :p
Pagina: 1