Alternative zu file_exists() | File via URL checken
Markus
- php
Hallo,
derzeit programmiere ich zum ersten mal an einem, für mich, großen Projekt. Das Problem ist nur, ich bin alleine und hab keine / kaum Ahnung :-/.
Nach den ersten 250 Zeilen bin ich nun auf das gestoßen, was meine gesamte Arbeit nun zu nichte machen könnte - Ein Problem, welches ich nicht alleine lösen kann.
Hilfesuchend wende ich mich nun an euch und hoffe, dass Ihr mir helfen könnt.
Ich muss eine Formulareingabe überprüfen, welche ein Bild enthält. Dieses Image bestimmt der User via. Formular selber. Nun muss ich sehen ob das File wirklich Existiert und überprüfe die Größen. Zweiteres ist kein Problem, aber mit dem Befehl file_exists() komm ich nicht weiter. Die URL kann ich da ja nicht angeben, zumindestens gibt er mir dann immer False an.
So sieht meine nette if-Zeile aus:
if(file_exists($post_op_userimage)) {
$image_exist_4save = "1";
[...]
} else {
$image_exist_4save = "0";
[...]
}
Egal was ich auch mache, er gibt mir immer "0" wieder.
Kennst jemand eine Alternative zu file_exists(), welche mit http am Anfang kompatible ist?
MfG:
Markus
Hello,
if(file_exists($post_op_userimage))
{
$image_exist_4save = "1";
[...]
}
else
{
$image_exist_4save = "0";
[...]
}
Egal was ich auch mache, er gibt mir immer "0" wieder.
Wer ist "er"?
Ich sehe hier auch keine Ausgabe, also wie erzeugst Du die?
Was passiert in den beiden [...]
Kennst jemand eine Alternative zu file_exists(), welche mit http am Anfang kompatible ist?
file_exists() ist ohnehin meistens für den A...., weil man sich damit meistens einen sogenannnten TOCTOU-Fehler baut (schau mal bei Google, was das bedeutet).
@ ALL:
Gerade Internet-Applikationen sollten auf die Nutzung solcher Funkitonen verzichten und die PHP-Entwickler täten gut daran, sich die Fehlerbehandlungsstrategie des guten alten Turbo-Pascal mal wieder anzuschauen und die endlich in PHP einzubauen.
Weg mit dem @ und her mit der Parseranweisung "ich behandele den Fehler selber", was dann aber auch geschehen muss, denn wenn man versucht, mit einem nicht abgefragten Fehlerwert weiterzuarbeiten, wird ein Runtimeerror ausgelöst.
Das würde in PHP dem Abfragen von $php_errormsg entsprechen ...
Oder sind Exceptions auch im prozeduralen PHP verfügbar?
Allerdings sind die sowieso viel zu kompliziert für eine einfache Sprache. :-)
Ein harzliches Glückauf
Tom vom Berg
Egal was ich auch mache, er gibt mir immer "0" wieder.
Wer ist "er"?
Ich sehe hier auch keine Ausgabe, also wie erzeugst Du die?
Die Ausgabe befindet sich weiter unten im Script. Ich wollte zu meinem eigenen Schutz möglichst wenig vom Script posten. Ausserdem hängt alles zusammen, dann müsste ich schon die gesamte Datei veröffentlichen. Problem dabei ist, dass ich möglichst wenig Datein haben wollte, weshalb es auch nur 3 geworden sind. Config, Sprachdatei und diese.
Was passiert in den beiden [...]
[...] stellt einen Lückenfüller da, da ihr ja diese Scriptteile nicht benötigt. Es wäre danach einfach nur noch unübersichtlich. Dann lieber 3 Zeilen mit den Informationen die ihr braucht, anstatt das ihr euch dann zwischen 20 durchwühlen müsst, wovon 17 nichts mit dem Thema zu tun haben.
file_exists() ist ohnehin meistens für den A...., weil man sich damit meistens einen sogenannnten TOCTOU-Fehler baut (schau mal bei Google, was das bedeutet).
Das Hilft mir leider nicht gerade bei meinem Problem.
@ ALL:
Gerade Internet-Applikationen [...]
Das hilft wohl noch weniger. Ein @ All in solch einem Thrend :-/. Nun ja, okey.
Hi,
Die Ausgabe befindet sich weiter unten im Script. Ich wollte zu meinem eigenen Schutz möglichst wenig vom Script posten.
Wenn das wirklich noetig sein sollte - dann solltest du von solchen "Projekten" die Finger lassen, und hoechstens Scripte schreiben, die deinen Standalone-Testserver niemals verlassen.
MfG ChrisB
Hi,
Die Ausgabe befindet sich weiter unten im Script. Ich wollte zu meinem eigenen Schutz möglichst wenig vom Script posten.
Wenn das wirklich noetig sein sollte - dann solltest du von solchen "Projekten" die Finger lassen, und hoechstens Scripte schreiben, die deinen Standalone-Testserver niemals verlassen.
MfG ChrisB
x) Da hab ich mich wohl falsch ausgedrückt. Nein, natürlich ist es nichts illigales an was ich hier arbeite. Jedoch arbeite ich sehr viel mit Verschlüsselungen und Codierungen, die einmalig getätigt werden. Aus diesem Grund habe ich mir einfach angewöhnt möglicht wenig vom Script preis zu geben, da daraufhin die Sicherheit meiner Projekte gefärdet sein könnte. Dies ist nun kein Script welches mit Verschlüsselungen, oder zu den PHP normalen, weitere Verschlüsselungen, arbeitet, jedoch suche ich ja nur eine Alternative zu file_exists(), welche ich einsetzen kann um Files auf anderen Hostern, auf existens, zu testen. Aus diesem Grund ist es jetzt nur die if(file_exist()), welche ich in meinem Beitrag aufgenommen habe und rein zur "Verschönerung" gedacht ist.
MfG:
Markus
Hello,
Aus diesem Grund ist es jetzt nur die if(file_exist()), welche ich in meinem Beitrag aufgenommen habe und rein zur "Verschönerung" gedacht ist.
Hast Du bisher das Protokoll genannt, dass Dir für diesen Test zur Verfügung steht?
Mit HTTP kannst Du direkt nur auf die Existenz von Ressourcen prüfen, ,indem Du einen HEAD-Request absetzt. Bei anderen Protokollen gibt es andere Möglichketien.
Ein harzliches Glückauf
Tom vom Berg
Mit HTTP kannst Du direkt nur auf die Existenz von Ressourcen prüfen, ,indem Du einen HEAD-Request absetzt. Bei anderen Protokollen gibt es andere Möglichketien.
Da müsstest du genauer Definieren. Ich verstehe nicht sehr viel von irgentwelchen Protokollen.
MfG
Hello,
Mit HTTP kannst Du direkt nur auf die Existenz von Ressourcen prüfen, ,indem Du einen HEAD-Request absetzt. Bei anderen Protokollen gibt es andere Möglichketien.
Da müsstest du genauer Definieren. Ich verstehe nicht sehr viel von irgentwelchen Protokollen.
Alternativ könntest Du Dich ja auch mal über Protokolle informieren.
Das sollte man eigentlich, zumindest ansatzweise, getan haben, bevor man einen Webserver auch nur anguckt.
Ein harzliches Glückauf
Tom vom Berg
Hello,
file_exists() ist ohnehin meistens für den A...., weil man sich damit meistens einen sogenannnten TOCTOU-Fehler baut (schau mal bei Google, was das bedeutet).
Das Hilft mir leider nicht gerade bei meinem Problem.
Bei diesem "Kinderschuhproblem" vermutlich nicht, aber vielleicht hilft es, eine "Erwachsenen-Problem" zu verhindern, wenn Du verstanden hast, was ich überhautp gesagt habe. Aber dazu müsstest Du einige Beiträge aus dem Web zum Thema TOCTOU suchen, lesen und verstehen.
Zum Thema "Lückenfüller" kann ich nur sagen, dass es ungewöhnlich ist, dass eine Variable durch "Lückenfüller" ihren Wert verändert. Ob dies der Fall ist, kann ich abr erst beurteilen, wenn ich die Lückenfüller kenne.
Zum Thema "@ All":
Es sit hier im Forum durchaus üblich, dass die Antwortenden durch eine "dumme Frage" auf vermeintlich "schlaue Ideen" gebracht werden und dann auch die übrigen Poster einbeziehen, um die Idee nicht zu vergessen. Meistens kann man diese Geistesblitze nach wenigen Antworten ad acta legen, aber es sind auch schon mal welche dabei, die sich dann jahrelang halten.
Sei deshalb also bitte so lieb, und benutze das Forum nicht so, als müssten auf Deine Fragen Alle nur Dir dienen. Es können nämlich durhc Deine Fragen durchaus auch Impulse für interessante neue Betrachtungen gegeben werden.
Das ist der Sinn des Dialoges und der Diskussion (Multilog)...
Ein harzliches Glückauf
Tom vom Berg
Sei deshalb also bitte so lieb, und benutze das Forum nicht so, als müssten auf Deine Fragen Alle nur Dir dienen. Es können nämlich durhc Deine Fragen durchaus auch Impulse für interessante neue Betrachtungen gegeben werden.
Das ist der Sinn des Dialoges und der Diskussion (Multilog)...
Es tut mir leid, dass ich so wirke. Im normalfall achte ich nur sehr start darauf, beim Topik zu bleiben, so auch in meinem eigenen Forum. Warscheinlich dadurch diese kleine Missverständlichkeit.
Ich vestehe deinen Beitrag leider nicht wirklich. Ich würde dies auch nicht wirklich als Kinderschuhproblem oder Erwachsenenproblem bezeichenen, jedoch ein Dankeschön hier. Es ist sicherlich mal gut zu wissen.
Es sit hier im Forum durchaus üblich, dass die Antwortenden durch eine "dumme Frage" auf vermeintlich "schlaue Ideen" gebracht werden
Ob diese "dumme Frage" nun auf meinen Beitrag oder Thrend bezogen ist, lassen wir nun einfach mal im Raume stehen.
Es wäre jedoch noch ganz nett wenn du kenntlich machst, ob dieser Beitrag Themenbezogen helfen könnte oder einen Lösungsweg bereit hält. Ich kann leider nichts hierraus erschließen.
Ein weiteres Dankeschön an dich, dass du dich mit dem Beitrag auseinander gesetzt hast und bei vermutlichen, weiteren Problemen geholfen hast. Das ist ein Bookmark wert.
MfG:
Markus
echo $begrüßung;
Oder sind Exceptions auch im prozeduralen PHP verfügbar?
Natürlich. Sie sind aber nur für deinen eigenen Zwecke verwendbar. Selbst auslösen, selbst fangen. Eine direkte Verbindung zur herkömmlichen Art PHPs, Fehler zu melden, existiert nicht.
echo "$verabschiedung $name";