PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit einem Formular (PHP)



Scorcher24
15.12.2004, 14:05
Hi folks !!
Das Problem ist ein bisschen kompliziert:


bzhead();
echo ("<center><br><br><br>");
echo("<table border=\"0\" width=\"50%\" cellspacing=\"6\" bgcolor=\"#3A6EA5\" height=\"1\" align=\"center\">"
."<tr>"
."<th>"
."<h1>Willkommen !</h1></p><hr>"
."</th>"
."<tr>"
."<th align=\"center\" width=\"100%\">"
."<form action=\"". $url ."/login.php?action=1&\" method=\"POST\">"
."<font size=\"2px\">BenutzerName:<br>"
."<input type=\"text\" name=\"uname\"><br>"
."Passwort:</font><br>"
."<input type=\"password\" name=\"passwd\"><br>"
."<br><input type=\"submit\" value=\"Login\">&nbsp;&nbsp;&nbsp;"
."<input type=\"Reset\" value=\"Reset\"></p><hr>"
."</th>"
."</tr>"
."</tr>"
."</table></body></html>"
."");
footer();

Dieses Formular soll seine daten ($uname und $passwd) an die login.php schicken. Auf einem lokalen Server hat dies 5 Tage lang auch funktioniert.
Seit das Ding online liegt, funzt das nimmer $uname und $passwd sind plötzlich leer!
Ich weiss echt nimer weiter !
rya.
Scorcher24


edit:
Also ich kann auf die VArs jetzt mit $_POST zugreifen aber warum ist das so ?? Warum diese Änderung ?? Wenn da jemand genaues weiss bitte melden !!

dmaphy
15.12.2004, 14:36
das ist der falsche code.
wesentlich ist hier der code der login.php.
ich nehme mal an, dein php lokal ist so konfiguriert, dass es globale variabeln erlaubt. ?
du solltest in der login.php die daten mit der superglobalen $_POST und $_GET auswerten,
das ist erstens sicherer und zweitens sollte es dann keine konflikte auf anders konfigurierten servern mehr geben... ;)

hehejo
15.12.2004, 17:20
Scorcher24, es gibt neben "code" auch "php".

$php = "This is PHP";
Formatier damit mal deinen Text, dann lässt es sich leichter lesen.

avaurus
15.12.2004, 20:36
@Scorcher24: das mit $_POST, $_GET, $_SERVER usw..ist schon länger so :)...also ich kann mich kaum an Zeiten erinnern, wo ich das falsch gemacht hatte...klar, beim ersten Tut hab ich das auch noch geschrieben, aber wenn man sich dafür interessiert, stößt man schnell drauf...mich wundert das nur, weil es ja sehr oft in der php docu erwähnt wird...man kann diese "Neuerung" eigentlich nicht übersehen haben.


In PHP 4.2.0 and later, the default value for the PHP directive register_globals is off. This is a major change in PHP. Having register_globals off affects the set of predefined variables available in the global scope. For example, to get DOCUMENT_ROOT you'll use $_SERVER['DOCUMENT_ROOT'] instead of $DOCUMENT_ROOT, or $_GET['id'] from the URL http://www.example.com/test.php?id=3 instead of $id, or $_ENV['HOME'] instead of $HOME.

For related information on this change, read the configuration entry for register_globals, the security chapter on Using Register Globals , as well as the PHP 4.1.0 and 4.2.0 Release Announcements.

Using the available PHP Reserved Predefined Variables, like the superglobal arrays, is preferred.

Mfg,

kiko
20.01.2006, 18:32
Hoi
Wie du es schon erfasst hast, kansnt du es mit $_REQUEST / POST / GET machen.
Das liegt warscheinlich an der PHP Version bzw. deren Einstellungen in der .ini.
Das einfachste wäre, wenn es ein großes script ist, einfach bei deinem bsp nun.


$uname = $_POST['uname'];
$passwd = $_POST['passwd'];

Somit kansnt du weiterhin mit den ueblichen Variablen arbeiten.
kiko

dmaphy
20.01.2006, 20:48
foreach ($_REQUEST as $key => $value) {
$$key = $value;
}


sollte ne ganze menge arbeit sparen, aber kiko seine lösung ist die bessere^^