Lydia: Warum funktioniert Variante 2 nicht?

Hallo!
Variante 1:

  
define ('MAILTO', "mail.an@localhost");  
@mail(MAILTO, "Mitteilung", ............)  

Variante 2:

  
$mail_to = "mail.an@localhost";  
@mail("$mail_to", "Mitteilung", .......)  

Bei Variante 1 wird das mail verschickt, in Variante 2 kommt die Meldung, dass der Empfänger nicht definiert ist.
Was ist daran falsch?
Grüße
Lydia

  1. Hallo Lydia,
    probier es mal ohne Anführungszeichen. Zudem würde ich mir immer wenn ein Fehler auftaucht und du dir nicht erklären kannst woher er kommt mittels error_reporting(E_ALL); die Fehler ausgeben lassen. Das @-Zeichen darfst du dann natürlich auch nicht vor die Funktion schreiben.

      
    $mail_to = "mail.an@localhost";  
    mail($mail_to, "Mitteilung", .......)  
    
    

    Gruß

    --
    Science flies you to the moon.
    Religion flies you into buildings.
    selfcode: ie:{ fl:| br:^ va:? ls:< fo:{ rl:( n4:{ ss:} de:[ js:} ch:{ sh:) mo:? zu:)
    1. Hallo,

      probier es mal ohne Anführungszeichen.

      Habe ich gemacht, aber es ändert sich nichts.

      Zudem würde ich mir immer wenn ein Fehler auftaucht und du dir nicht erklären kannst woher er kommt mittels error_reporting(E_ALL); die Fehler ausgeben lassen. Das @-Zeichen darfst du dann natürlich auch nicht vor die Funktion schreiben.

      Wo soll denn die zusätzliche Fehlerinformation erscheinen?
      Gruß

      1. Hi!

        Zudem würde ich mir immer wenn ein Fehler auftaucht und du dir nicht erklären kannst woher er kommt mittels error_reporting(E_ALL); die Fehler ausgeben lassen. Das @-Zeichen darfst du dann natürlich auch nicht vor die Funktion schreiben.
        Wo soll denn die zusätzliche Fehlerinformation erscheinen?

        error_reporting(E_ALL) im Script und vor der fehlerhaften Stelle aufzurufen ist eine Variante, um alle (wichtigen) Meldungen anzeigen zu lassen. Zudem muss display_errors angeschaltet sein. Die Meldungen werden dann in die normale Ausgabe geschrieben, sind also im Browser zu sehen (manchmal jedoch nur in der Quelltextansicht). Auf der Entwicklungsmaschine kann man sich die Einstellungen auch dauerhaft konfigurieren (und mit phpinfo() kontrollieren). Scripts, die mit der Einstellung E_ALL Fehler liefern, sollte man nicht ausliefern, sie vielmehr so umarbeiten, dass PHP keinen Grund mehr hat. Das wichtigste an E_ALL ist der Einschluss von E_NOTICE. Damit werden vor allem Zugriffe auf nicht vorhandene Variablen gemeldet, was beispielsweise bei Tippfehlern vorkommt. In deinem Fall kann ich nur mutmaßen, dass es sich vielleicht um einen solchen handelt, den du beim Schreiben deines Postings nicht mit überhommen hast, und wir ihn so nicht sehen können.

        Lo!

  2. Hallo Lydia,

    @mail("$mail_to", "Mitteilung", .......)

    Wozu die "-Zeichen um `$mail_to`{:.language-php}? Dadurch wird versucht, die Mail an $mail\_to zu senden, da die Variable als Zeichenkette interpretiert und nicht der Wert dieser genommen wird.  
      
      
    Mit freundlichem Gruß  
    Micha
    
    -- 
    [Software zur Bestimmung von Formparametern](http://derletztekick.com/software/formanalyse) - [Forum Vermessung](http://forum.diegeodaeten.de) im Portal [Geodäsie und Geoinformatik](http://diegeodaeten.de)  
      
    
    
    1. Hi!

      @mail("$mail_to", "Mitteilung", .......)
      Wozu die "-Zeichen um $mail_to? Dadurch wird versucht, die Mail an $mail_to zu senden, da die Variable als Zeichenkette interpretiert und nicht der Wert dieser genommen wird.

      Nein. Innerhalb von mit "" eingerahmten Strings werden Variablen interpretiert. Es ist trotzdem sinnlos, einen einzelnen Variablennamen in Anführungszeichen einzurahmen. Außerdem kann ich der Fehler mit dem gezeigten Code nicht nachvollziehbar und zwischen beiden Varianten keinen funktionalen Unterschied feststellen.

      Lo!

      1. Hallo,

        Außerdem kann ich der Fehler mit dem gezeigten Code nicht nachvollziehbar und zwischen beiden Varianten keinen funktionalen Unterschied feststellen.

        Ich habe definitiv nur die beiden Zeilen geändert!
        Gruß

      2. Hallo dedlfix,

        Nein. Innerhalb von mit "" eingerahmten Strings werden Variablen interpretiert.

        Besten Dank für den Hinweis!

        Mit freundlichem Gruß
        Micha