2013-08-06 3 views
5

Ich arbeite an der Umwandlung einiger alter .php3-Code. Während die alte .php3-Version auf der alten Box läuft, funktioniert alles gut. Wenn ich auf die Schaltfläche "Neuschreiben" klicke, wird der Block neu geschrieben. php3 und php Variabler Unterschied

.php3

<? 
if($rewrite) { 
//here is therewrite code 
} 

<input class="smButton" type="submit" name="rewrite" value="Save Changes"> 

.php

<?php 
if($rewrite) { 
//here is therewrite code 
} 

<input class="smButton" type="submit" name="rewrite" value="Save Changes"> 

Gibt es etwas offensichtlich, dass ich fehle? Etwas in der .php3-Version setzt die Umschreibvariable, aber in der neuen Version wird es nicht gesetzt, es sei denn, ich setze es manuell an die Spitze der .php-Datei.

Hoffentlich ist das genug Code. Ich frage mich nur, was könnte so unterschiedliche Verhaltensweisen zwischen den 2 Versionen verursachen.

Antwort

11

register_globals ist wahrscheinlich auf für PHP 3 und in der neueren PHP-Version aus (wie es sein sollte)

+0

Da ist der Schuldige! Das hat den Trick gemacht. Ändern Sie einfach den Wert von Aus zu Ein. Für eine schnelle zukünftige Bezugnahme auf irgendjemanden befindet sich dieser Wert in der Konfigurationsdatei php.ini. Persönlich war meine bei /etc/php/php.ini. – sealz

+3

Sie sollten Ihren Code überprüfen, anstatt dieses beschissene alte Feature zu aktivieren :-). Es ist ein bisschen gefährlich, dieses Verhalten beizubehalten (Variablen versehentlich überschreiben zum Beispiel ...) –

+0

@Maxime Lorant Immer eine gute Idee. Ich werde es jetzt auf meine Todo-Liste setzen, da die Unterschiede in den Versionen langsam ausgearbeitet werden. – sealz

5

Sie haben die $rewrite von $_POST['rewrite'], weil Ihre neue PHP-Version wird nicht aktiviert register_globals, ersetzen, die übersetzen jeder $_POST['x'] und $_GET['x'] (und allgemeiner $_REQUEST['x']) zu $x)

Dies führt zu einer bunch of security holes, wenn Sie PHP-Code von geringer Qualität haben (was der Fall sein kann, wenn Sie es nicht seit Jahren pflegen haben).