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