phpbar.de logo

Mailinglisten-Archive

[php] imap-Programmierung

[php] imap-Programmierung

Boris Andratzek Boris.Andratzek at cation.de
Mit Nov 2 19:01:22 CET 2005


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