Anführungszeichen oder Hochkommata?

Corazoon

Grünschnabel
Tagchen.

Ich fand ein und das selbe Script auf verschiedenen Seiten im www, und dabei viel mir jedoch ein gravierender Unterschied auf, nämlich das bei all diesen Scripten immer an bestimmten, identischen Stellen (jeweils hinter dem "array", dem "isset" und dem "include" Befehl), einmal Anführungszeichen, einmal gar nichts, und einmal Hochkommata´s verwendet werden.
Hm, bin absoluter PHP Neuling und kann mir keinen wirklichen Reim darauf machen (habe schon in einigen PHP Tuts diesbezüglich nachgeschaut, werde da aber auch nicht wirklich schlau draus) Ist das an den eingesetzten Stellen egal "welches" der Anführungszeichen man dort einsetzt (u. ob man überaupt eines einsetzt), oder spielt das doch irgendeine entscheidende Rolle? Kann mich diesbezüglich bitte jemand aufklären.

Und warum stehen außerdem immer in den jeweiligen Befehlen $_GET[xxxx] bei allen Scripten unterschiedliche Namen drin, z.B.: einmal site, einmal topic und einmal id? Wofür stehen diese Namen / Bezeichnungen? Verweisen diese auf einen Verzeichnis-Ordner, auf ein Array, oder worauf sonst konkret?

PHP:
<?php
$include_array =array(newsletter.inc.php,
	impressum.inc.php);
$inc_dir=opendir ("./service");
while ($inc = readdir ($inc_dir)) {
if($inc != "." && $inc != "..") {
$short_inc = str_replace(".inc.php", "", $inc);
array_push ($include_array, $short_inc);
} }
closedir($inc_dir);
if (isset($_GET[site]) && in_array($_GET[site], 
	$include_array) ) {
include("./service/".$_GET[site].".inc.php");
}
else { include("./service/start.inc.php"); }
?>

PHP:
<?php
$include_array =array("newsletter.inc.php",
	"impressum.inc.php");
$inc_dir=opendir ("./service");
while ($inc = readdir ($inc_dir)) {
if($inc != "." && $inc != "..") {
$short_inc = str_replace(".inc.php", "", $inc);
array_push ($include_array, $short_inc);
} }
closedir($inc_dir);
if (isset($_GET["topic"]) && in_array($_GET["topic"], 
	$include_array) ) {
include("./service/".$_GET["topic"].".inc.php");
}
else { include("./service/start.inc.php"); }
?>

PHP:
<?php
$include_array =array('newsletter.inc.php',
	'impressum.inc.php');
$inc_dir=opendir ("./service");
while ($inc = readdir ($inc_dir)) {
if($inc != "." && $inc != "..") {
$short_inc = str_replace(".inc.php", "", $inc);
array_push ($include_array, $short_inc);
} }
closedir($inc_dir);
if (isset($_GET['id']) && in_array($_GET['id'], 
	$include_array) ) {
include("./service/".$_GET['id'].".inc.php");
}
else { include("./service/start.inc.php"); }
?>
 
Das erste Beispiel ist syntaktisch inkorrekt, wird jedoch leider von PHP auch gebilligt. Die letzten beiden Beispiele sehen dafür schon besser aus. Schau dir bloß nicht den Stil des ersten Beispiels ab!

Welche Anführungszeichen du zur Auszeichnung von Zeichenketten verwenden möchtest, bleibt dir überlassen und ist auch eher Geschmackssache und persönlicher Stil. Du solltest dir jedoch über die unterschiedliche Behandlung beider Auszeichnungen klar sein, dass PHP Zeichenkettenauszeichnungen mit einfachen und doppelten Anführungszeichen unterschiedlich verarbeitet. (Siehe dazu den Zeichenketten-Datentyp.) Das ist eine häufige Fehlerquelle, wenn man sich dessen nicht bewusst ist.
 
Ich habe nie etwas darüber gelesen, aber ich denke es macht keinen Unterschied, welche Anführungszeichen du verwendest. Gar keine zu verwenden halte ich allerdings für einen schlechten Stil und vllt bekommt man da auch je nach Serverkonfiguration Probleme.

Das $_GET[] kann jeder selbst definieren und ist abhängig von der Url:

Ruft man
Code:
http://www.webseite.de/index.php?parameter=wert
im Browser auf, und stehet in der index.php folgendes:
PHP:
<?php
echo $_GET['parameter'];
?>
Bekommt man im Browser
Code:
wert
zu sehen.

cAm3eel.
 
Soweit so klar. Danke für die schnellen Antworten.

Abschließende Frage:
wenn man dieses Script zum Einsatz bringen würde, stellte dieses dann noch irgendein gravierendes Sicherheitsrisiko dar, oder wäre es nahezu perfekt so wie die jeweiligen Veröffentlicher/Anbieter es beschreiben?
 
Es gibt viel schlimmere Dinge, die stärker ins Gewicht fallen, als die „falschen“ Anführungszeichen zu verwenden.
 
Schon, aber man kann die Ergebnisse der Benchmarks ja auf jeden Fall mal im Hinterkopf behalten...
 
Aber bietet die alleinige Abfrage, ob sich die zu includierende Datei auf dem eigenen Webserver befindet, jetzt 100%ige Sicherheit vor eventl. Hacker-Attacken, oder bleibt trotzdem noch ein gewisses Restsicherheitsrisiko bestehen? Und falls "ja", welches dann?
 
Das Skript erlaubt nur die in der $include_array-Variable enthaltenen Werte, also die beiden vorgegebenen sowie alle Dateinamen der Dateien, die sich im „service“-Verzeichnis befinden, wobei zusätzlich noch das „.inc.php“ entfernt wird.
 
Zurück