Umstieg PHP5.2 auf PHP5.4: Unterschied zwischen den Versionen

Aus helpdesk
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „- http://www.html.de/tutorials/7464-php-register_globals-hat-es-damit-auf-sich.html - http://www.phpbar.de/w/Register_globals - http://php.net/manual/de/securi…“)
 
 
(17 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
- http://www.html.de/tutorials/7464-php-register_globals-hat-es-damit-auf-sich.html
== Was ändert sich im Programmcode beim Umstieg von PHP Version 5.2 nach 5.4? ==
- http://www.phpbar.de/w/Register_globals
 
- http://php.net/manual/de/security.globals.php
 
- http://www.goldmann.de/variablen-in-php-sauber-uebergeben-mit-register_globals%3Doff_tipp_138.html
'alter' Code / 'neuer' Code:
 
* betroffen $HTTP_XXXX_VARS
<pre>
alt: $HTTP_GET_VARS['img']
neu: $_GET['img']
alt: $HTTP_POST_VARS['password']
neu: $_POST['password']
</pre>
* betroffen SERVER-Variablen und Environment
<pre>
alt: $DOCUMENT_ROOT
neu: $_SERVER['DOCUMENT_ROOT']
alt: $PHP_SELF
neu: $_SERVER['PHP_SELF']
alt: $HOME
neu: $_ENV['HOME']
</pre>
* betroffen Sessions
<pre>
alt: session_register('var')
      $var = Wert
neu: $_SESSION['var'] = Wert
</pre>
* betroffen Umlaute mit der Funktion htmlspecialchars() und htmlentities(). Die neue PHP5.4er Version hat neue Standardencoding (vor PHP5.4 ISO-8859-1, seit PHP5.4 UTF-8)
<pre>
alt: htmlspecialchars($text)
neu: htmlspecialchars($text,NULL, "")
alt: htmlentities($text)
neu: htmlentities($text,NULL, "")
</pre>
 
* betroffen Quote-Symbole (" und ') die skriptseitig über htmlspecialchars() in Formularfelder (input, textarea, etc.) geschrieben werden. Der Effekt ist der gleiche wie bei den Umlauten (s.o.)
<pre>
alt: htmlspecialchars($text)
neu: htmlspecialchars($text,ENT_QUOTES,"")
</pre>
 
== Anwendungsbeispiele ==
 
alt: undefinierter index in array
<pre>
      $do = $_GET['do'];
      if ($do == 'verify')
      [...]
</pre>
 
neu: abfragen ob array-element existiert, ggf. initialisieren/definieren der Variable ''do''
<pre>
      if (!empty($_GET['do']))
                $do = $_GET['do'];
      else
                $do = "";
      if ($do == 'verify')
      [...]
</pre>
 
== Debuggen ==
 
Sämtliche Fehler, Warnungen, Notizen und Hinweise auf ''deprecated'' (veraltete) Functions können mit Hilfe des Funktionsaufrufes
 
<pre>
      error_reporting(E_ALL);
</pre>
 
am Anfang eines PHP-Programmes, hinter dem öffnenden PHP Start-Tag, angezeigt werden.
 
== Usefull Links: ==
 
 
* http://www.html.de/tutorials/7464-php-register_globals-hat-es-damit-auf-sich.html
* http://www.phpbar.de/w/Register_globals
* http://php.net/manual/de/security.globals.php
* http://www.goldmann.de/variablen-in-php-sauber-uebergeben-mit-register_globals%3Doff_tipp_138.html


[[Kategorie:Internet-Dienste]]
[[Kategorie:Internet-Dienste]]

Aktuelle Version vom 9. April 2013, 11:29 Uhr

Was ändert sich im Programmcode beim Umstieg von PHP Version 5.2 nach 5.4?

'alter' Code / 'neuer' Code:

  • betroffen $HTTP_XXXX_VARS
 alt: $HTTP_GET_VARS['img']
 neu: $_GET['img']
 alt: $HTTP_POST_VARS['password']
 neu: $_POST['password']
  • betroffen SERVER-Variablen und Environment
 alt: $DOCUMENT_ROOT
 neu: $_SERVER['DOCUMENT_ROOT']
 alt: $PHP_SELF
 neu: $_SERVER['PHP_SELF']
 alt: $HOME
 neu: $_ENV['HOME']
  • betroffen Sessions
 alt: session_register('var')
      $var = Wert
 neu: $_SESSION['var'] = Wert
  • betroffen Umlaute mit der Funktion htmlspecialchars() und htmlentities(). Die neue PHP5.4er Version hat neue Standardencoding (vor PHP5.4 ISO-8859-1, seit PHP5.4 UTF-8)
 alt: htmlspecialchars($text)
 neu: htmlspecialchars($text,NULL, "")
 alt: htmlentities($text)
 neu: htmlentities($text,NULL, "")
  • betroffen Quote-Symbole (" und ') die skriptseitig über htmlspecialchars() in Formularfelder (input, textarea, etc.) geschrieben werden. Der Effekt ist der gleiche wie bei den Umlauten (s.o.)
alt: htmlspecialchars($text)
neu: htmlspecialchars($text,ENT_QUOTES,"")

Anwendungsbeispiele

alt: undefinierter index in array

      $do = $_GET['do'];
      if ($do == 'verify')
      [...]

neu: abfragen ob array-element existiert, ggf. initialisieren/definieren der Variable do

      if (!empty($_GET['do']))
                $do = $_GET['do'];
      else
                $do = "";
      if ($do == 'verify')
      [...] 

Debuggen

Sämtliche Fehler, Warnungen, Notizen und Hinweise auf deprecated (veraltete) Functions können mit Hilfe des Funktionsaufrufes

      error_reporting(E_ALL); 

am Anfang eines PHP-Programmes, hinter dem öffnenden PHP Start-Tag, angezeigt werden.

Usefull Links: