Nachdem ich mein WAMP System auf meinem PC installiert habe und alles läuft ist mir gester gleich etwas aufgefallen :
Ein Script funktioniert nicht so wie es soll :
Switch ($order) {
default :
$myorder = "id";
break;
case fgroup :
$myorder = "fgroup";
break;
case url :
$myorder = "url";
break;
case fsize :
$myorder = "filesize";
break;
case ddlz :
$myorder = "ddl";
break;
}
$anfrage = "SELECT * FROM tabelle ORDER BY $myorder";
wenn man zu Beispiel den link tabelle.php?order=url (tablelle.php?order=url) ordnet das Script die Daten nach der Spalte URL.
Das hat auf meinem Webspace im Internet auch funktioniert , jedoch auf meinem WAMP system , das ich neu installiert habe scheinen die Varialblen nicht übergeben zu werden .
Wie und wo kann man da was ändern ?
thanx
paddy
Oder noch ein anderes Beispiel :
<?
If (!$zahl) {
$zahl = 4;
}
$ergebnis = (10+$zahl);
echo $ergebnis;
?>
Wenn man nun zahl.php?zahl=42 eingeben würde,
müsste das script eigentlich 4+42 rechnen = 46.
Aber es erscheint immer 14 ! Als ob der Parser die variable zahl in der url gar nicht beachtet :(
please help
schreib mal den code der vorhergehenden seite, weil da liegt ja anscheinend der fehler, so kann man nicht helfen.
hast du - glaube ich - falsch verstanden :
Das übergeben von Variablen funktioniert nicht !
beispiel.php enthält folgendes script
<?
echo $variable;
?>
wenn man jetzt beispiel.php mit dem anhang ?variable=xyz
aufruft (beispiel.php?variable=xyz) , musste eigentlich xyz dastehen - das funktioniert auch im normalen PHP Webspace, jedoch nicht auf meinen WAMP system , das eigentlich als lokales entwicklungssystem gedacht ist und keine verbindung zum internet hat .
Habe den Fehler gefunden !
In der PHP.ini war register_globals auf "off" gestellt.
Eigentlich sollte da On stehen .
trotzdem danke
Troublegum
26-04-2002, 19:02
Register_Globals = Off ist Standarteinstellung in allen neuen Versionen.
Programmier liebers so, dass du ohne Register Globals auskommst.
kann man dann überhaupt noch vernünftig variablen übergeben ?
Troublegum
26-04-2002, 21:38
Klar, auf jeden fall vernünftiger als ohne.
So und so ist es zukunftsorientierter.
Ich empfehle eine Lektüre des Abschnitts Sicherheit des PHP manuals.
; - register_globals = Off [Security, Performance]
; Global variables are no longer registered for input data (POST, GET, cookies,
; environment and other server variables). Instead of using $foo, you must use
; you can use $_REQUEST["foo"] (includes any variable that arrives through the
; request, namely, POST, GET and cookie variables), or use one of the specific
; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
; on where the input originates. Also, you can look at the
; import_request_variables() function.
; Note that register_globals is going to be depracated (i.e., turned off by
; default) in the next version of PHP, because it often leads to security bugs.
; Read http://php.net/manual/en/security.registerglobals.php for further
; information.
; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.
Sag mal - wenn man register_globals = Off setzt , und man möchte zum beispiel einen Reflink irgendwoanders einbauen der so aussieht : www.domain.de/index.phtml?refid=42 oder so - wie funktionierts dann eigentlich ?? kann man die variable dann noch irgendwie ins script holen ? oder verstehe ich da jetzt irgendwas nicht -> denn wenn register_globals == off ist dann haben doch die Variablen in der URI keine bedeutung mehr oder ??:dontknow:
Hab mir den artikel zwar durchgelesen aba bin irgendwie nicht richtig schlau daraus geworden :(
Troublegum
29-04-2002, 17:00
Ja, das steht doch im Manual:
Also: Per GET übertragene Variablen (z.b. script?var=value)
werden im Array $_GET[] (vor PHP 4.1 $HTTP_GET_VARS[]) zur Verfügung gestellt.
Per POST übertragene Variablen im Array $_POST[] (vor PHP 4.1 $HTTP_POST_VARS) und neu ab PHP 4.1 ist auch das Array $_REQUEST[] in dem alle einkommenden Variablen aus GET,POST, COOKIES und Sessions gespeichert sind.
mehr dazu erfährst du unter
http://www.php.net/manual/en/reserved.variables.php
Du rufst script.php?var1=value1 auf
statt echo $var1; zu benutzen, nutzt du nun:
echo $_REQUEST[var1];
ok danke -> ich habs dann doch irgendwie verstanden *wunder*
thanx