Viktor's Supportboard
Quickmenü
» Start
» Portal
» Kontakt
» Mitglieder
» Team

» Handy-Ansicht


Usermenü

» Registrieren

Login
Benutzername:
Passwort:

(Passwort vergessen?)

Database
» Database

Lizenzshop/Verwaltung
» Lizenzshop/Verwaltung


Allgemeines
» Themen der letzen 24 Stunden
» Beiträge von Heute
» Aktuelle Umfragen
» Themen als gelesen markieren
» Themen ohne Antwort

» F.A.Q
» Regeln
» Impressum
» Datenschutzerklärung

» Linkliste
» Partner
» Statistik

Kostenplichtige Hacks
» VG-Lizenz
» VG-Fotowettbewerb
» VG-Kontaktanzeige
» VG-Literatur-Verwaltung
» VGTreffen/Dater
» VGMusik/Video

Mein Hacks
» VGUser-Leaflet-Map
» VGUser-Google-Map
» VGClub-Map-Google
» User-Map
» Club-Map
» User-Locator
» Club-Locator
» Mitglieder Bilderupload
» VGOnlineList
» Teamspeak Onlineanzeige

Meine Banner
» Meine Banner

Statistik
Beiträge: 138.762 (Täglich: 23,36 )
Themen: 16.167
Mitglieder: 13.157
Neuestes Mitglied: irt99298.
Ausl. d. letzten Minute: 71%
Ausl. d. letzten 5 Minuten: 77%
Ausl. d. letzten 15 Minuten: 79%
Freier Webspace: 2 TB
PHP-Version: 7.3.10

Spenden

Partner
Mein Supportboard

MySQLDumper

Forum für Angehörige und Freunde von Krebspatienten

Wetter-Board

Make your Webserver

ABC-des Essens

IC-Netforum

ultimate-funultimate-fun

Steinadler-Bastelstübchen

Webseitenschutz

Werben

Viktor's Supportboard » Programmieren » MySQL und PHP » [Frage] Arbeiten mit Dateien » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Arbeiten mit Dateien
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
anima   Zeige anima auf Karte anima ist männlich
wBB2-User


Zeige anima auf Karte
Dabei seit: 17.12.2005
Beiträge: 64
0 Filebase-Einträge
Alter: 48 Jahre
wBB-Version: wBB2.3


Mitglied bewerten

Level: 31 [?]
Erfahrungspunkte: 325.417
Nächster Level: 369.628

44.211 Erfahrungspunkt(e) für den nächsten Levelanstieg



Arbeiten mit Dateien Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Ende der Seite springen Zum Anfang der Seite springen

Sagt mal überall wo ich suchte fand ich folgendes wenn ich eine Datei auf vorhanden sein und beschreibbar prüfen will

php:
1:
if (file_exists ($datei) && is_writable($datei))


doch es geht doch genauso wenn ich das folgender Maßen schreibe:

php:
1:
if (file_exists &&  is_writable($datei))


Meiner Meinung nach einfacher und darum meine Frage, ist meine Überlegung falsch ?


Grüßle
Anima
09.06.2007 15:44 anima ist offline E-Mail an anima senden Beiträge von anima suchen Nehmen Sie anima in Ihre Freundesliste auf Germany
DonManfred   Zeige DonManfred auf Karte DonManfred ist männlich
VGLizenz


images/avatars/avatar-265.jpg

Zeige DonManfred auf Karte
Dabei seit: 31.03.2006
Beiträge: 1.821
6 Filebase-Einträge
Alter: 50 Jahre
Herkunft: Düren
wBB-Version: wBB2.3
PHP-Version: 5.2.8
MySQL-Version: 5.0.51b
Wo bist du gehostet?: http://df.eu

Bewertung: 
39 Bewertung(en) - Durchschnitt: 5,13

Level: 49 [?]
Erfahrungspunkte: 9.071.278
Nächster Level: 10.000.000

928.722 Erfahrungspunkt(e) für den nächsten Levelanstieg



RE: Arbeiten mit Dateien Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Ende der Seite springen Zum Anfang der Seite springen

Zitat:
Original von anima
php:
1:
if (file_exists ($datei) && is_writable($datei))


doch es geht doch genauso wenn ich das folgender Maßen schreibe:

php:
1:
if (file_exists &&  is_writable($datei))


Meiner Meinung nach einfacher und darum meine Frage, ist meine Überlegung falsch ?


Ja. GRUNDFALSCH sogar. Was soll denn deiner Meinung nach bei dem "alleine stehenden file_exists (welches ja OHNE PARAMETER ist!!) rauskommen? Was soll der denn da Prüfen?

Du hast den Sinn und Zweck von sochen Abfragen nicht verstanden! Mal von der korrekten Version ausgehend (deine Version vergisst du am besten GANZ GANZ SCHNELL wieder! Die ist falscher als falsch!):

php:
1:
if (file_exists ($datei) && is_writable($datei))


die schreibweise mit && ist manchmal verwirrend (nicht falsch!) wenn es ums verständnis geht.

Wie Du sicher weisst geht man in der Mathematik mit Punkt vor Strichrechnung vor. und eben, das Klammern immer zuerst ausgewertet werden, ja? Soweit kommste noch mit?

Ok, nun mal obige Zeile, wie man sie "eigentlich" schreibt. Deine Variante ist nicht falsch, sie ist halt nur eine kürzere Variante (a shortcut).

php:
1:
if ( (file_exists ($datei)) AND (is_writable($datei)) )


SO wird das (auch das obige) von PHP interpretiert. PHP prüft also immer auf true oder false.

Hier sind also zwei klammern mit jeweils einer abfrage (exists und writeable) die wiederum mit einem AND verknüft sind und in einer weiteren klammer stecken (das direkt hinter dem if)....

Ich benenne diese Klammern mal um es zu verdeutlichen

php:
1:
if <klammer1> <klammer2_1>file_exists ($datei)</klammer2_1> AND <klammer2_2>is_writable($datei)</klammer2_2> </klammer1>


PHP wertet nun also klammer 2_1 aus ob da "true" bei rauskommt. Wenn dies nicht so ist, dann wird klammer2_2 gar nicht erst ausgewertet, weil klammer2_1 AND klammer2_2 jetzt schon nicht mehr "true" liefern könnten, da klammer2_1 schon false geliefert hat, wenn die Datei nicht existiert. klammer1 wird also mit false abgeschlossen ohne klammer2_2 jemals ausgewertet zu haben. Nebenbei bemerkt packt man aufwendigere "Aufgaben" bei solchen abfragen immer weiter "nach rechts". Aber ich schweife ab.

Existiert die Datei macht php mit klammer2_2 weiter. Ist dies false, dann ist klammer2_1 AND klammer2_2 ja auch nicht "true". Also ist das ergebnis von klammer1 auch wieder false. Nur wenn klammer2_1 UND klammer2_2 true zurückliefern, dann ist das Ergebnis von klammer1 TRUE.

So. Nun nochmal zu deinem falschen file_exists... Ohne Dateiname als Parameter kann dir das doch nur "false" liefern, wenn du dich auf das ergebnis verlassen willst. Fazit: Dein schönes Haus fällt gerade sowas von zusammen. zumindest wenn du nun die funktionalität von solchen verstanden hast dann müsste Dir klar werden, das es so niemals gehen kann. großes Grinsen

Es muss ja auch nen Grund haben, warum es "überall" anders gemacht wird, oder? <-- Erklärt sich aber durch das Verständnis solcher Abfragen und wie sie funktionieren.

Hope it helps... Erst Recht wo ich mir hier nun die finger wund getippt habe großes Grinsen

__________________
Gruss Mannes

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

09.06.2007 16:07 DonManfred ist offline E-Mail an DonManfred senden Beiträge von DonManfred suchen Nehmen Sie DonManfred in Ihre Freundesliste auf Fügen Sie DonManfred in Ihre Kontaktliste ein Germany
anima   Zeige anima auf Karte anima ist männlich
wBB2-User


Zeige anima auf Karte
Dabei seit: 17.12.2005
Beiträge: 64
0 Filebase-Einträge
Alter: 48 Jahre
wBB-Version: wBB2.3


Mitglied bewerten

Level: 31 [?]
Erfahrungspunkte: 325.417
Nächster Level: 369.628

44.211 Erfahrungspunkt(e) für den nächsten Levelanstieg

Themenstarter Thema begonnen von anima


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Ende der Seite springen Zum Anfang der Seite springen

Versteh mich bitte nicht falsch aber würde das nicht funktionieren, dann hätte ich das auch nicht im Raume geworfen.

Nein es funktioniert und zwar so das hier geprüft wird ob die Datei vorhanden und beschreibbar ist. Trifft eins von beiden nicht zu, erfolgt ein false.

Und hier noch mal zum Nachvollziehen.

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:

<?php
$log './datei_test.txt';
if (file_exists && is_writable($log)) {
echo "Datei ist vorhanden und beschreibbar";
}
else{
echo "Datei ist nicht vorhanden oder nicht beschreibbar";
}
?>




Klar das was du schreibst das verstehe ich schon und doch funktioniert es doch auch so und da fange ich an mir Gedanken zu machen und darum dieser Thread


Anima
09.06.2007 16:38 anima ist offline E-Mail an anima senden Beiträge von anima suchen Nehmen Sie anima in Ihre Freundesliste auf Germany
DonManfred   Zeige DonManfred auf Karte DonManfred ist männlich
VGLizenz


images/avatars/avatar-265.jpg

Zeige DonManfred auf Karte
Dabei seit: 31.03.2006
Beiträge: 1.821
6 Filebase-Einträge
Alter: 50 Jahre
Herkunft: Düren
wBB-Version: wBB2.3
PHP-Version: 5.2.8
MySQL-Version: 5.0.51b
Wo bist du gehostet?: http://df.eu

Bewertung: 
39 Bewertung(en) - Durchschnitt: 5,13

Level: 49 [?]
Erfahrungspunkte: 9.071.278
Nächster Level: 10.000.000

928.722 Erfahrungspunkt(e) für den nächsten Levelanstieg



Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Ende der Seite springen Zum Anfang der Seite springen

file_exists ohne Parameter prüft, ob im aktuellen Verzeichnis EINE Datei vorhanden ist. "Sonderdateien" wie "." gibt es immer. Es gibt also in diesem fall wirklich true zurück, da gebe ich dir Recht. ABER ich schrieb ja das man sich ja drauf verlassen möchte, was da zurückgeliefert wird. Und DA ist halt der Programmierer gefragt, der der funktion file_exists eben sagen muss, WELCHE Datei da denn auf vorhanden sein überprüft werden soll. In deinem Beispiel wird ja NIE die gewünschte Datei geprüft!

du kannst das ganze gere mit einem

if (file_exists && $fp=fopen("datei.txt","r"))

prüfen indem du datei.txt nicht hast... Nach deinem Verständnis dürfte das fopen ja gar nicht ausgeführt werden, ja? Ok, probiers aus großes Grinsen

__________________
Gruss Mannes

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

09.06.2007 16:45 DonManfred ist offline E-Mail an DonManfred senden Beiträge von DonManfred suchen Nehmen Sie DonManfred in Ihre Freundesliste auf Fügen Sie DonManfred in Ihre Kontaktliste ein Germany
anima   Zeige anima auf Karte anima ist männlich
wBB2-User


Zeige anima auf Karte
Dabei seit: 17.12.2005
Beiträge: 64
0 Filebase-Einträge
Alter: 48 Jahre
wBB-Version: wBB2.3


Mitglied bewerten

Level: 31 [?]
Erfahrungspunkte: 325.417
Nächster Level: 369.628

44.211 Erfahrungspunkt(e) für den nächsten Levelanstieg

Themenstarter Thema begonnen von anima


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Ende der Seite springen Zum Anfang der Seite springen

Danke, jetzt versteh ich was du meinst und aus dieser Sichtweise, lasse ich es lieber so wie allgemein bekannt.

Merci und einen lieben Gruß
Anima

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von anima: 09.06.2007 17:10.

09.06.2007 16:57 anima ist offline E-Mail an anima senden Beiträge von anima suchen Nehmen Sie anima in Ihre Freundesliste auf Germany
anima   Zeige anima auf Karte anima ist männlich
wBB2-User


Zeige anima auf Karte
Dabei seit: 17.12.2005
Beiträge: 64
0 Filebase-Einträge
Alter: 48 Jahre
wBB-Version: wBB2.3


Mitglied bewerten

Level: 31 [?]
Erfahrungspunkte: 325.417
Nächster Level: 369.628

44.211 Erfahrungspunkt(e) für den nächsten Levelanstieg

Themenstarter Thema begonnen von anima


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Ende der Seite springen Zum Anfang der Seite springen

Hallo Don und allen anderen die darauf eine Antwort haben und mir das näher erklären möchten.

von Oben nach unten, von Zeile zu Zeile, klammer für klammer. Mir ist durchaus klar wie abgearbeitet wird und gemäß deiner Erklärung hat mich das trotzdem keine Ruhe gelassen.

Ich sage dir auch warum und vielleicht magst du mir ja dennoch erklären, warum das funktioniert.

Ich habe ein Verzeichnis und darin liegt eine Datei. Nennen wir Sie datei_test.txt die ich mit der Vari
php:
1:
$log
erfasse
Jetzt prüfe ich mit dem sicherlich falschen Skript ob die Datei vorhanden ist und ob Sie beschreibbar ist. Da beides vorhanden ist, bekomme ich ein Datei ist vorhanden und beschreibbar.

Nehme ich jetzt die Datei weg, dann erhalte ich als Meldung „ Datei ist nicht vorhanden oder nicht beschreibar.

Ich lege jetzt die Datei wieder rein, bei einem Windows System setze ich eine Schreibschutz drauf, bei einem Linux System, nehme ich die Schreibrechte weg, erhalte ich ebenso als Meldung „Datei ist nicht vorhanden oder nicht beschreibbar“.

Um das ganze noch mal zu verschärfen, habe ich in dem Verzeichnis weitere Dateien hineingelegt, und den Test wiederholt.

An dem Ergebnis hat sich aber nicht geändert.

Demzufolge Arbeitet php die If Anweisung:

php:
1:
if (file_exists && is_writable($log)) {


ebenso ab als wäre es in dieser Schreibweise, die ja richtig ist geschehen:

php:
1:
if (file_exists($log) &&  is_writable($log)) {


Bin ich jetzt völlig bescheuert ….bitte keine Antwort darauf smile…weißte ich verstehe nicht warum das Funktioniert aber es funktioniert und lässt sich nachvollziehen in diesem Beispiel.
Vielleicht eine Ausnahme....vielleicht verstehe ich es auch nicht. Aber ich habe alle möglichkeiten getestet, nachdem es nicht funktionieren dürfte....tut es aber dennoch.

Andere Frage, warum funktioniert es?
11.06.2007 01:39 anima ist offline E-Mail an anima senden Beiträge von anima suchen Nehmen Sie anima in Ihre Freundesliste auf Germany
DonManfred   Zeige DonManfred auf Karte DonManfred ist männlich
VGLizenz


images/avatars/avatar-265.jpg

Zeige DonManfred auf Karte
Dabei seit: 31.03.2006
Beiträge: 1.821
6 Filebase-Einträge
Alter: 50 Jahre
Herkunft: Düren
wBB-Version: wBB2.3
PHP-Version: 5.2.8
MySQL-Version: 5.0.51b
Wo bist du gehostet?: http://df.eu

Bewertung: 
39 Bewertung(en) - Durchschnitt: 5,13

Level: 49 [?]
Erfahrungspunkte: 9.071.278
Nächster Level: 10.000.000

928.722 Erfahrungspunkt(e) für den nächsten Levelanstieg



Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Ende der Seite springen Zum Anfang der Seite springen

Kauf dir bitte ein gutes PHP-buch... willst du es nicht kapieren, das ein file_exists ohne parameter NICHT DEINE Datei checkt sondern irgendeine. Selbst ein leerer Ordner hat eine Datei "." im Ordner. Aus php-sicht gibt es also keine leeren Ordner.

Deine abfrage funktioniert nur dann, wenn Du eine NICHT EXISTIERENDE Datei prüfen würdest UND der RECHTE BEfehl gar nicht erst aufgerufen würde. NUR UND AUSSCHLIESSLICH dann hat dein file_exists vorher "richtig" gearbeitet.

Ist mir jetzt aber auch zu blöd da noch weiter drauf einzugehen... Hier im forum sind einige gute buchtips. Vielleicht lernst du es ja mit denen.

__________________
Gruss Mannes

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

11.06.2007 02:04 DonManfred ist offline E-Mail an DonManfred senden Beiträge von DonManfred suchen Nehmen Sie DonManfred in Ihre Freundesliste auf Fügen Sie DonManfred in Ihre Kontaktliste ein Germany
anima   Zeige anima auf Karte anima ist männlich
wBB2-User


Zeige anima auf Karte
Dabei seit: 17.12.2005
Beiträge: 64
0 Filebase-Einträge
Alter: 48 Jahre
wBB-Version: wBB2.3


Mitglied bewerten

Level: 31 [?]
Erfahrungspunkte: 325.417
Nächster Level: 369.628

44.211 Erfahrungspunkt(e) für den nächsten Levelanstieg

Themenstarter Thema begonnen von anima


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Ende der Seite springen Zum Anfang der Seite springen

Sorry aber so wie du mir entgegen trittst...tue ich das auch ?
Nein ganz bestimmt nicht.......

Deine Aussagen stimmen nicht so wie du das von dir gegeben hast.

Inzwischen weiß ich was warum ich ein Ergebnis wie erwartend bekommen habe.

Wenn ich so wie hier prüfe dann wertet php nur das is_writable($log) aus.

if (file_exists && is_writable($log)) {

Sprich alles vor dem is_writable($log) wird nicht ausgewertet.

Was ich nicht wusste war, das is_writable($log) ebenso ein false zurückliefert, wenn die Datei nicht vorhanden ist.
Ich nahm an das ich nur Prüfen kann wenn die Datei tatsächlich vorhanden ist und wenn sie nicht vorhanden ist, ich von php eine Fehlermeldung erhalte.

In meinem jetzigen Fall bedeutet das, wenn ich prüfen muss ob eine Datei vorhanden und beschreibbar ist, das ich mit der Abfrage is_writable($log) auskomme und nicht explizit file_exists() und is_writable($log) prüfen muss.

Danke für die Antwort
11.06.2007 11:41 anima ist offline E-Mail an anima senden Beiträge von anima suchen Nehmen Sie anima in Ihre Freundesliste auf Germany
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Viktor's Supportboard » Programmieren » MySQL und PHP » [Frage] Arbeiten mit Dateien

Impressum | Datenschutz | Fast-Index

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab® GmbH Design © Tine

Valid XHTML 1.0! Valid CSS! Die letzten Themen Die letzten Beiträge © für wbb2 by Bandy & cback.de Geblockte Angriffe: 25.330
Seo Sidemap Powert by 2Clubradio.de
Viktor's Supportboard, ist " Online " seit 16 Jahren, 95 Tage, 16 Stunden, 39 Minuten und 56 Sekunden