PDA

Bekijk Volledige Versie : Waar blijft m'n POST data?



Theo v. Werkhoven
15/11/03, 17:00
Hoi,

ik tracht een webchat PHP script aan te zwengelen
(http://sourceforge.net/projects/mahc/), waarin ik een probleem heb met
het doorgeven van data via POST van index.php naar het login/registratie
deel ahmc.php

Dit is trouwens het tweede PHP webchat proggie dat ik probeer, en dit
vertoont, een ander, ARSC
(http://freshmeat.net/redir/arsc/13793/url_homepage/arsc) doet precies
hetzelfde als ik een user wil registreren.

#v+
index.php:
++++++++++++++++
[..]
<TABLE CELLPADDING=10 CELLSPACING=0 BORDER=1 WIDTH=400>
<FORM METHOD=POST ACTION=mahc.php>
<TR><TD BGCOLOR=$ACCENT1><CENTER><B><FONT
SIZE=+1>".strtoupper($COMPANY)."
".strtoupper($PROGRAM)."$MLANG1</TD></TR>
<TR><TD BGCOLOR=$ACCENT2><CENTER><B><FONT SIZE=+1>
$MLANG3 <INPUT TYPE=TEXT NAME=USERNAME VALUE=$USERNAME><BR>
$MLANG4 <INPUT TYPE=PASSWORD NAME=PASSWORD><BR>
$MLANG5 <INPUT TYPE=CHECKBOX NAME=NEWACCOUNT></TD></TR>
<TR><TD BGCOLOR=$ACCENT1><CENTER><B><FONT SIZE=+1>
<INPUT TYPE=SUBMIT VALUE=\"$MLANG6\">
[..]
+++++++++++++++++

mahc.php:
[..]
// gevonden in n.i.w.s. (M. Wierda)
foreach ($_POST as $key=>$value) {
echo "naam : ".$key."\n";
echo "waarde : ".$value."\n";
}
print "User: ".$USERNAME;
print "Pass: ".$PASSWORD;
// vanaf hier weer orgineel
// account names/passwords are case-insensitive
$USERNAME=strtolower($USERNAME);
$PASSWORD=strtolower($PASSWORD);
$USERNAME=ucwords($USERNAME);
if (!ereg("^[a-zA-Z]([a-zA-Z0-9]{2,11})$",$USERNAME)) {
LoginError("$MLANG250<BR>");
} else if (!ereg("^([a-zA-Z0-9]{6,12})$",$PASSWORD)) {
LoginError("$MLANG251<BR>");
} else {
[..]
#v-

Resultaat:
naam : USERNAME
waarde : gurp
naam : PASSWORD
waarde : pass
naam : NEWACCOUNT
waarde : on
User:
Pass:

De waarden van USERNAME, PASSWORD en NEWACCOUNT kloppen, maar waarom
zijn de variabelen leeg als ik ze print of verder wil gebruiken?

Het script gaat verder door met mij vertellen dat ik geen valide
Username heb ingetikt.

Ik vermoed dat het om een setting in php.ini gaat, of misschien een
permissie probleem, maar Apache laat daar niets van zien in de logs oid.

PHP4.3.1, Apache 1.3.27

Iemand die mij wat wijzer kan/wil maken?

Theo
--
Theo van Werkhoven PE1CCG .- - amsat.org SuSE Linux
theo at van-werkhoven . nl JO22GF AMD XP2100+ 512MB
"Two of the most famous products of Berkeley are LSD and BSD.
I don't think that this is a coincidence" --Anonymous

Daniel Tryba
15/11/03, 17:30
Theo v. Werkhoven <theo@van-werkhoven.nl.invalid> wrote:
[knip]
> $MLANG3 <INPUT TYPE=TEXT NAME=USERNAME VALUE=$USERNAME><BR>
[knip]

Het is vragen om problemen indien je values niet netjes defineerd (hint:
quotes).

> // gevonden in n.i.w.s. (M. Wierda)
> foreach ($_POST as $key=>$value) {
> echo "naam : ".$key."\n";
> echo "waarde : ".$value."\n";
> }
> print "User: ".$USERNAME;
> print "Pass: ".$PASSWORD;
> // vanaf hier weer orgineel
> // account names/passwords are case-insensitive
> $USERNAME=strtolower($USERNAME);
> $PASSWORD=strtolower($PASSWORD);
> $USERNAME=ucwords($USERNAME);
[knip]

> De waarden van USERNAME, PASSWORD en NEWACCOUNT kloppen, maar waarom
> zijn de variabelen leeg als ik ze print of verder wil gebruiken?

Nee, de waarden in het array $_POST kloppen. $USERNAME, $PASSWORD enz
zijn zeer aarschijnlijk niet gedefinieerd (dat levert op z'n minst een
warning op).

> Ik vermoed dat het om een setting in php.ini gaat, of misschien een
> permissie probleem, maar Apache laat daar niets van zien in de logs oid.
>
> PHP4.3.1, Apache 1.3.27

FAQ, FAQer de FAQ. Je stelt de meest gestelde vraag sinds de release van
PHP 4.2.0: zoe eens op register globals in deze groep en op php.net

> Iemand die mij wat wijzer kan/wil maken?

Zet error reporting op max (E_ALL);

--

Daniel Tryba

Theo v. Werkhoven
15/11/03, 19:00
The carbonbased lifeform Daniel Tryba inspired nl.internet.www.server-side with:
[..]
>> PHP4.3.1, Apache 1.3.27
>
> FAQ, FAQer de FAQ. Je stelt de meest gestelde vraag sinds de release van
> PHP 4.2.0: zoe eens op register globals in deze groep en op php.net

Gevonden, 't "doet 't" nu.
Bedankt Daniel.

Theo
--
Theo van Werkhoven PE1CCG .- - amsat.org SuSE Linux
theo at van-werkhoven . nl JO22GF AMD XP2100+ 512MB
"Two of the most famous products of Berkeley are LSD and BSD.
I don't think that this is a coincidence" --Anonymous

Maarten Wierda
15/11/03, 19:00
Theo v. Werkhoven wrote:

> Hoi,

Hoi.

> ik tracht een webchat PHP script aan te zwengelen
> (http://sourceforge.net/projects/mahc/), waarin ik een probleem heb met
> het doorgeven van data via POST van index.php naar het login/registratie
> deel ahmc.php

Ik vermoed nu al, ook mede door het subject, dat dit probleem iets te
maken heeft met zogenaamde Superglobals
<http://www.phpfreakz.nl/artikelen.php?aid=88>.

<snip>

> print "User: ".$USERNAME;
> print "Pass: ".$PASSWORD;

Dit zou moeten zijn +-

print("username : ".$_POST["USERNAME"]);

Succes.

--
Cheers, Maarten Wierda
cp: The Wipers - No Generation Gap

"Teenage angst has paid off well, now I'm bored and old"

Theo v. Werkhoven
16/11/03, 00:30
The carbonbased lifeform Maarten Wierda inspired
nl.internet.www.server-side with:
> Theo v. Werkhoven wrote:
>
>> Hoi,
>
> Hoi.
>
>> ik tracht een webchat PHP script aan te zwengelen
>> (http://sourceforge.net/projects/mahc/), waarin ik een probleem heb met
>> het doorgeven van data via POST van index.php naar het login/registratie
>> deel ahmc.php
>
> Ik vermoed nu al, ook mede door het subject, dat dit probleem iets te
> maken heeft met zogenaamde Superglobals
><http://www.phpfreakz.nl/artikelen.php?aid=88>.
>
><snip>
>
>> print "User: ".$USERNAME;
>> print "Pass: ".$PASSWORD;
>
> Dit zou moeten zijn +-
>
> print("username : ".$_POST["USERNAME"]);

Duidelijk, vooral door de link. De code is aangepast en werkt weer as
advertized.
Hartelijk bedankt.

Theo
--
Theo van Werkhoven PE1CCG .- - amsat.org SuSE Linux
theo at van-werkhoven . nl JO22GF AMD XP2100+ 512MB
"Two of the most famous products of Berkeley are LSD and BSD.
I don't think that this is a coincidence" --Anonymous