Mailinglisten-Archive |
Hallo Johannes, zunächst vielen Dank für den Hinweis mit dem FROM-Feld. Ich habe gleich meine Account-Daten geändert. Unhöflich möchte ich keinesfalls sein... Schon gar nicht, wenn mir so kompetent geholfen wird! Ich habe fix das || gegen or ausgetauscht und schon bekomme ich ein Resource id #7 user/webmaster.foo.com Damit kann ich weiterarbeiten!! Also auch für die Hilfe vielen Dank!! Gruß, Boris Johannes Schlueter wrote: > Hi B, > > zunächst: Hier gilt es als höflich seinen Namen in des From Feld einzutragen. > Die Angabe dessen erhöt die warscheinlichkeit, dass das Posting gelesen wird. > ("Wieso soll ich jemandem helfen der sich versteckt?") > > Aber zum Punkt: > > On Wednesday 02 November 2005 17:10, B wrote: > >>$mbox = imap_open ("{localhost:143 /imap/tls/novalidate-cert}", "cyrus", >>"PASSWORT", OP_HALFOPEN) || die ("can't connect: ".imap_last_error()); >>echo $mbox,'<br>'; > > [...] > >>Ich bekomme aber als Ausgabe >> >>1 > > [...] > >>Dabei macht mich die ressource_ID '1' besonders stutzig. Und sie ist ja >>wohl auch falsch, wenn man dem Fehler Glauben schenken darf. > > > Das Problem ist das || nach dem imap_open. Entsprechend der > Operator-Reihenfolge[1] wird zunächst || und dann = ausgewertet. d.h. das > Ergebnis von imap_open (in diesem Fall eine Resource) wird genommen. Der || > Operator sieht, dass der, nach cast zu bool, true ist und wertet die(...) > nichtmehr aus. Der Rückgabewert dieser Boolschen-Operation (true) wird dann > durch das = an $mbox zugewiesen. echo macht dann ein Cast zu einem String, > somit wird aus true ein String "1". > > Was du willst ist "or" statt "||". Da hat dann "=" Vorrang vor dem "or". > > $mbox = imap_open ("{localhost:143 /imap/tls/novalidate-cert}", "cyrus", > "PASSWORT", OP_HALFOPEN) OR die ("can't connect: ".imap_last_error()); > > da wird zunächst imap_open ausgeführt, das ergibt Resource, dann die Zuweisung > ausgeführt, also $mbox bekommt die Resource, das "Ergebnis" einer Zuweisung > ist der zugewiesene Wert also Resource, damit wird "or" ausgewertet, dass ist > true somit wird das die() auch nichtmehr ausgewertet. > > Das ganze kann man umgehen indem man die Fehlerprüfung mit einem if-Statement > macht, was auch den Vorteil hat, dass man im Fehlerfall umfassendere > Behandlung machen kann. > > $mbox = imap_open ("{localhost:143 /imap/tls/novalidate-cert}", "cyrus", > "PASSWORT", OP_HALFOPEN); > if (!$mbox) { > die ("can't connect: ".imap_last_error()); > } > > johannes > > [1] http://php.net/operators
php::bar PHP Wiki - Listenarchive