Mailinglisten-Archive |
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