php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.03.2005, 12:12  
Gast
 
Beiträge: n/a
Standard Problem mit include(), Code wird 2mal ausgeführt

Hallo liebe Gemeinde,


ein herzliches "Hallo" erstmal. Mein erster Post in diesem Forum ist gleichmal anlässlich eines (zumindest für mich) verzwickten Problems.

Folgende Situaion: Ich habe zwei Dateien

PHP-Code:
// index.php

... (HTML-Code) ...

<?php
    
include(<page-ID>); // <page-ID> (im Original "PID") wird per GET übergeben
                                   // die Zuordung erfolgt über ein Array -> $a[PID] == "contact.php"
?>

... (HTML-Code) ...
PHP-Code:
// contact.php

<?php
    
if(isset($_GET["send"]))
    {
        
$from=$_POST["from"];
        
$msg=$_POST["msg"];
        
        if(!
mail("<Empfänger>","<Betreff>",$msg,"From: ".$from."\r\n"))
        {
            echo 
"<Fehler>";
        }
        else
        {
            echo 
"<erfolgreich>";
        }
    }
?>

<form method="POST" action="index.php?PID=8&send">

... (HTML-Code)...

</form>
Wird nun das Formular aus contact.php ausgeführt, also die index.php mit den GET-Parametern ?PID=8&send aufgerufen, wird der if-Block des aus contact.php eingebunden Codes 2mal ausgeführt. Es werden demnach 2 eMails versandt; die erste "korrekt", die zweite kommt mit leerem Absender und leerem body ($from und $msg in $_POST[] sind leer).

Hat jemand eine Idee woran das liegen könnte? Falls jemand Zeit und Lust hat kann man sich hier den kompletten Code der index.php ansehen.

Vielen Dank schonmal für jede Hilfe und Gruß
Matthias
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.03.2005, 12:20  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

wird denn auch 2 mal

echo "<erfolgreich>";

ausgeführt?
robo47 ist offline  
Alt 30.03.2005, 12:21  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von robo47
wird denn auch 2 mal

echo "<erfolgreich>";

ausgeführt?
seltsamer Weise nicht, zumindest erscheint die Ausgabe nur einmal...
 
Alt 30.03.2005, 12:37  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

aber es werden 2 verschiedene Emails versendet? dann würde ich mal mit deinem hoster reden.
robo47 ist offline  
Alt 30.03.2005, 12:57  
Gast
 
Beiträge: n/a
Standard

Sowas ähnliches hab ich mir auch schon gedacht. Allerdings habe ich auf meiner eigenen Homepage (gleicher Webspace) ebenfalls ein Kontaktformular welches tadellos funktioniert. Der einzige Unterschied zu dem PHP-Code dieses Formulares ist eben die Einbindung via include().

Hat denn jemand ein ähnliches Konstrukt welches funktioniert? Die Intention dahinter ist, die Seite ohne HTML-Frames zu gestalten - und recht viel andere Möglichkeiten habe ich da ja IMHO nicht...
 
Alt 30.03.2005, 13:04  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

naja du solltest heruasfinden wie und warum 2 mails geschickt werden, schau mal ob dein anderes script z.b. den 5ten parameter von mail() mitbenutzt.

für mehr infos:
www.php.net/mail

mfg
robo47
robo47 ist offline  
Alt 30.03.2005, 13:36  
Gast
 
Beiträge: n/a
Standard

Mein "funktionierendes" Fomular ruft die mail()-Funktion 1a genauso auf wie es oben das zweite tut. Ich kann _wirklich_ keinen Unterschied feststellen.

Den einzigen Hinweis den ich mir herleiten kann ist, dass beim 2ten versenden der Mail die beiden via POST übergegeben Variablen leer bzw. nicht definiert sind. AFAIS bedeutet das doch das die index.php nochmal aufgerufen wird, zwar mit den GET Parametern aber ohne den POST Aufruf aus dem Formular. Nur warum wird sie zweimal aufgerufen ??
 
Alt 30.03.2005, 13:47  
Gast
 
Beiträge: n/a
Standard

Vorschlag zur Eingrenzung des Fehlers:
Ich habe bei der Gelegenheit das Script entrümpelt.
PHP-Code:
<?php 
if(isset($_GET["send"])) 
{
        
mail("<Empfänger>","<Betreff>",$_POST["msg"],"From: "$_POST["from"]) 

exit; 
# <- nur zum Test!


else
{
?> 

<form method="POST" action="index.php?PID=8&send"> 

... (HTML-Code)... 

</form>
<?php
}
?>
Der Rückgabewert von mail() ist uninteressant:
Zitat:
mail() gibt TRUE zurück, wenn die Mail erfolgreich für den Versand akzeptiert wurde, sonst FALSE.
 
Alt 30.03.2005, 14:12  
Gast
 
Beiträge: n/a
Standard

Vielen Dank für Deinen Vorschlag. Allerdings hat es weiterhin den Effekt das die mail 2mal versandt wird.

Was ich etwas seltsam finde (oder vielleicht kenne ich PHP auch zu wenig :wink: ) ist, dass wenn das exit erreicht wird das Parsen der index.php komplett beendet wird. Das heisst doch IMHO der Parser hat offensichtlich die Datei zuerst geladen und verarbeitet dann die komplettierte index-Seite weiter - oder? Sollte das so sein verstehe ich das zweimalige ausführen noch weniger ...
 
Alt 30.03.2005, 14:36  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

nur mal zum spass ne andere empfängeremail genommen? man weis ja nie was welcher anbieter mit mails macht, spricht teste mal mit nem gmx, gmail, lycos ,web.de oder was du halt hast account.

mfg
robo47
robo47 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Problem mit Include pck1983 PHP Tipps 2008 7 15.07.2008 19:13
include problem Canni PHP Tipps 2006 26 14.11.2006 14:24
Problem mit Code Highlighter Kein Genie PHP Tipps 2006 31 09.05.2006 13:08
include - get - big problem Buschdieb PHP-Fortgeschrittene 6 14.04.2006 20:28
xtemplate include problem PHP Tipps 2006 9 06.03.2006 19:36
include problem N°2 PHP Tipps 2005-2 11 06.08.2005 16:36
noch ein include problem PHP Tipps 2005-2 1 06.08.2005 15:57
include problem schmiddy PHP Tipps 2005-2 11 06.08.2005 15:22
Galerie code problem PHP Tipps 2004 1 29.09.2004 10:35
[Erledigt] Problem mit Include PHP Tipps 2004 17 22.09.2004 15:59
Include Problem PHP Tipps 2004 4 14.09.2004 14:08
include Problem andrew22 PHP Tipps 2004 26 10.09.2004 16:04
Problem mit COde PHP Tipps 2004 5 28.08.2004 16:04
Gästebuch / Include Problem PHP Tipps 2004 9 14.07.2004 18:48
Problem mit Include Script PHP Tipps 2004 2 15.06.2004 14:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2005/20408-problem-mit-include-code-wird-2mal-ausgefuehrt.html, php isset post wird zwei mal ausgeführt, problem php wird 2 mal aus, html code für 2mal

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.