Prüfen ob Funktion erlaubt?!
Maddin
- php
0 oma0 dedlfix
0 Maddin
1 function_exists()
EisFuX
Huhu liebes Forum.
Ich habe ein kleines Problem...
Ich möchte gerne eine Zeile aus einer Datei auslesen.
Kein Problem, da ich fsockopen() nutze.
Auf meinem Server klappt das auch soweit, da er die Funktion zulässt.
Nun haben aber viele Leute "meinen" Code.
Die Fehlermeldung (Warning: fsockopen() has been disabled for security reasons in ... on line xxx) kann ich ja mit einem "@" vor der Funktion verhindern.
Nur finde ich es nicht elegant gelöst.
Ich möchte gerne eine Alternative anbieten, die soweit auch klappt.
=> Das Problem ist weiterhin nur folgendes:
Wie kann ich mit PHP überprüfen, ob die Funktion fsockopen() zugelassen wird? Mit "function_exist()" prüfe ich ja nur, ob die Funktion vorhanden ist.
Oder muss ich es leider Gottes so beibehalten?
Danke für jede Hilfe, lG Maddin
Das müssen doch deine Leute wissen die deinen Code verwenden was sie alles verboten haben. Sag du Ihnen was sie erlauben sollen und dein Code läuft.
Alternative: Du schreibst deinen Code so das er auf allen Systemen läuft auf denen er eingesetzt wird.
Dateien mit fsockopen zu öffnen ist eh nicht unbedingt die feine Art.
Oma
Hallo Oma,
Das müssen doch deine Leute wissen die deinen Code verwenden was sie alles verboten haben. Sag du Ihnen was sie erlauben sollen und dein Code läuft.
du solltest davon ausgehen, dass es unglaublich viele Webmons^Webmaster gibt, die von den Einstellungen ihres Hostingpakets keine Ahnung haben - geschweige denn, was die im Einzelnen für Konsequenzen haben.
Alternative: Du schreibst deinen Code so das er auf allen Systemen läuft auf denen er eingesetzt wird.
Genau das hat er ja vor.
Dateien mit fsockopen zu öffnen ist eh nicht unbedingt die feine Art.
Dateien natürlich nicht - das kann fsockopen() genausowenig wie fopen() entfernte Ressourcen lesen kann[1]. Aber Ressourcen auf oder beliebige Kommunikationskanäle zu anderen Servern spricht am sehr wohl mit fsockopen() an.
So long,
Martin
[1] Ja, es gibt die Krücke "allow_url_fopen"; die auszunutzen ist aber auch nicht gerade die feine Art.
Martin hat es auf den Punkt gebracht.
Gibt es denn wirklich keine Funktion oder sonstiges, mit der ich das Ganze abfangen kann?
Oder andere Frage: Wenn die Funktion fsockopen() nun nicht zugelassen ist, gibt sie ja ein "Warning: ..." aus - das müsste doch irgendwo als Error registriert sein, oder?
Ist es so möglich (auf Umwegen) die Funktion dementsprechend abzufangen bzw. herauszufinden, ob sie erlaubt ist?
Danke,
lG Maddin
Mahlzeit,
Ist es so möglich (auf Umwegen) die Funktion dementsprechend abzufangen bzw. herauszufinden, ob sie erlaubt ist?
Darauf gibt das Manual einen Hinweis:
Rückgabewerte
Die Funktion fsockopen() gibt einen Zeiger auf eine Datei zurück, der zusammen mit den anderen Dateifunktionen (wie fgets(), fgetss(), fwrite(), fclose() und feof()) verwendet werden kann. Wenn der Aufruf fehlschlägt, wird FALSE zurückgegeben.
Wenn du also FALSE zurückbekommst, konnte die entfernte Datei aus irgendeinem Grund nicht geöffnet werden. Der Grund selbst ist ja in diesem Fall völlig egal.
echo $begrüßung;
Wie kann ich mit PHP überprüfen, ob die Funktion fsockopen() zugelassen wird? Mit "function_exist()" prüfe ich ja nur, ob die Funktion vorhanden ist.
Wenn die Funktion zwar existiert aber nicht erfolgreich war, sollte sie das wie üblich durch ihren Rückgabewert bekanntgeben.
echo "$verabschiedung $name";
Wenn die Funktion zwar existiert aber nicht erfolgreich war, sollte sie das wie üblich durch ihren Rückgabewert bekanntgeben.
Ähm ja, ich glaube ich fange nochmal mit <?php echo "Hallo Welt"; ?> an...
Ich frage mich nun echt, wieso ich nicht auf etwas so simples gekommen bin...
Naja, ich danke dir vielmals =)
Schönen Abend noch, lG Maddin
(Hallo|Hi(ho)|Nabend) Maddin,
=> Das Problem ist weiterhin nur folgendes:
Wie kann ich mit PHP überprüfen, ob die Funktion fsockopen() zugelassen wird? Mit "function_exist()" prüfe ich ja nur, ob die Funktion vorhanden ist.
Das dachte ich auch mal und hatte mir dafür extra eine Funktion zusammengebastelt, die den PHP.ini-Eintrag ausliest, der die "disabled"-ten Funktionen enthält:
/// check if given function is disabled
/// return BOOL or LIST of disabled functions
function function_is_disabled(
$function = NULL /// STR callable function name (no object methods!)
) {
static $disabled = NULL; // caches the list of disabled functions
if (NULL === $disabled) {
$disabled = array_flip(preg_split(
'/\s*,\s*/',
trim(ini_get('disable_functions')),
-1,
PREG_SPLIT_NO_EMPTY
));
}
if (NULL === $function) { // !func_num_args()
return $disabled;
}
if (isset($disabled[$function])) {
return TRUE;
}
return FALSE;
}
Das war vollkommen unnötig, denn function_exists() liefert auch bei deaktivierten Funktionen den Rückgabewert FALSE.
MffG
EisFuX