• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

contact formular spinnt rum..

ooJAKOBoo

Neues Mitglied
hallo zusammen,
folgendes problem.

ich hab da son formmailer der auf meinem eigenen webspace ohne probs funktioniert.

jetzt mach ich grad ne website für nen kollegen und der is bei sonem hoster irgendwo in brasilien.

jetzt wollt ich das contact formular auch auf seiner site benutzen weils ja so schön funktioniert bei meinen und ein paar anderen sites. aber da bei diesem brasilianischem hoster funzt das nicht..

also ich lad das formular hoch und unmittelbar nachm aufrufen der site, also die contact.php steht dann da :

Notice: Undefined variable: aErrors in E:\domains\9\"HIER_STEHT_NORMALERWEISE_DIE_ DOMAIN"\user\htdocs\contact.php on line 126

ich bin da jetzt nicht so die php leuchte..^^
waran kann das liegen?



PHP:
<?php
function showError($aErrors)
{
    if (!empty($aErrors)) {
        echo '<div style="text-align:center;">';
        if (count($aErrors) < 2) {
            echo '<p>Fill The Mandatory Field !</p>';
        } else {
            echo '<p>Fill The Mandatory Fields !</p>';
        }
        echo '<ul class="error">';
        foreach ($aErrors as $sValue) {
            echo '<li>' . $sValue . '</li>';
        }
        echo '</ul>';
        echo '</div>';
    }

}

if (isset($_POST['submit'])) {
    $aErrors = array();
    if (!$_POST['name']) {
        $aErrors[] = "Enter Your Name !";
    }
    if (!$_POST['email']) {
        $aErrors[] = "Enter Your E-Mail Adress !";
    } elseif (!preg_match('/^[\w.+-]{2,}\@[\w.-]{2,}\.[a-z]{2,6}$/', $_POST['email'])) {
        $aErrors[] = "Your E-Mail Adress Is Invalid !";
    }
    if (!$_POST['subject']) {
        $aErrors[] = "Enter A Subject !";
    }
    if (!$_POST['msg']) {
        $aErrors[] = "Enter Your Message !";
    }

    if (empty($aErrors)) {
        $date = date('d.m.Y - H:i');
        $sender =  $_POST['email'];
        $header = "From:" . $sender;
        $mailtext = $_POST['name'] . "   has sent a message to you on www.fitzbrrddthd.com on   " . $date . " GMT+01:00 ! \n\n\n\nName: " . $_POST['name']. "\n\nE-Mail Adress: " . $_POST['email']. "\n\nWebsite: " . $_POST['website']. "\n\nSubject: " . $_POST['subject']. "\n\nMessage:\n" . $_POST['msg']. "\n\nSubmitted Files To Download: " . $_POST['filedownload'];
        $subject = $_POST['subject'];
        $mailto = "[email protected]";

        mail($mailto, $subject, $mailtext, $header);
    }
}
?>


und hier im 2. teil soll angeblich die undefinierte variable sein.. :(

PHP:
<?php
                 echo showError($aErrors);
                 if (!isset($_POST['submit']) || !empty($aErrors)) {
?>
 
Werbung:
Das unterschiedliche Verhalten auf verschiedenen Servern hängt vermutlich mit den Servereinstellungen zusammen.

Ändere den fehlerhaften Teil mal so ab:
PHP:
<?php
   if (!isset($_POST['submit']) && !empty($aErrors)) {
      echo showError($aErrors);
   }
   if (!isset($_POST['submit']) || !empty($aErrors)) {
     
?>
Gruß thuemmy
 
ok, die fehler meldung ist nun weg.
allerdings wird da irgendwie etwas noch nicht richtig umgesetzt.
die values usw. werden in den textfeldern angezeigt.. :sad:


u1yi9b8pzo3.jpg
 
Werbung:
also das sind in den textfeldern ja die gleichen fehler wie in dem fall oben..
kannst du mir da auch noch helfen und eventuell kurz erklären was da nu anders passieren muss?

danke.


PHP:
<p style="text-align:left;">
Name *
<br>
<input tabindex="1" class="textfeld" type="text" size="45" name="name" value="<?php echo $_POST['name']; ?>" id="name"<?php if (isset($_POST['submit']) && !$_POST['name']) { echo ' class="error"'; } ?>>
<br>
<br>
 E-Mail Adress *
<br>
<input tabindex="2" class="textfeld" type="text" size="45" name="email" value="<?php echo $_POST['email']; ?>" id="email"<?php if (isset($_POST['submit']) && (!$_POST['email'] || !stristr($_POST['email'], "@") || !stristr($_POST['email'], "."))) { echo ' class="error"'; } ?>>
<br>
<br>
Website
<br>
<input tabindex="3" class="textfeld" type="text" size="45" name="website" value="http://<?php echo $_POST['website']; ?>" id="website"<?php if (isset($_POST['submit']) && !$_POST['website']) { echo ' class="error"'; } ?>>
<br>
<br>
Subject *
<br>
<input tabindex="4" class="textfeld" type="text" size="45" name="subject" value="<?php echo $_POST['subject']; ?>" id="subject"<?php if (isset($_POST['submit']) && !$_POST['subject']) { echo ' class="error"'; } ?>>
<br>
<br>
Message *
<br>
<textarea tabindex="5" class="textfeld" name="msg" rows="7" cols="34" id="msg"<?php if (isset($_POST['submit']) && !$_POST['msg']) { echo ' class="error"'; } ?>><?php echo $_POST['msg']; ?></textarea>
<br>
<br>
Submitting Files [Paste your download link]
<br>
<input tabindex="6" class="textfeld" type="text" size="45" name="filedownload" value="http://<?php echo $_POST['filedownload']; ?>" id="filedownload"<?php if (isset($_POST['submit']) && !$_POST['filedownload']) { echo ' class="error"'; } ?>>
</p>

<p style="text-align:left;">
* required mandatory field !
</p>
 
Da beim Erstaufruf des Formulars noch keine Post-Variablen gesetzt sind, ist das ein normales Verhalten, wenn error_reporting[E_ALL] gesetzt ist.

Es gibt nun 2 Möglichkeiten:

  • error_reporting komplett ausschalten
  • Notice nicht mehr anzeigen error_reporting(E_ALL ^ E_NOTICE);
Welche Version Du für Dich wählst, bleibt Dir überlassen.

Gruß thuemmy
 
so, die fehlermeldungen sind weg.
allerdings wird das formular jetzt nich mehr abgeschickt und es wird auch keine fehlermeldung mehr angezeigt wenn ein pflichtfeld nicht ausgefüllt wurde. :(

hat sich schon erledigt..

vielen danke für die hilfe.. ;)
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
da gibts doch nachmal n problem.. .. :(

wenn ich jetzt auf senden click erscheint dieser feher im head bereich..

HTML:
Warning:  mail() [function.mail]: SMTP server response: 554 <jakob@meine_domain.de>: Recipient address rejected: Relay access denied in E:\domains\9\"MEINE_DOMAIN.COM"\user\htdocs\contact.php on line 48
in zeile 48 steht das hier:
PHP:
mail($mailto, $subject, $mailtext, $header);
was isn da jetzt los?^^
 
Welchen SMTP-Server hast Du denn auf Deinem System installiert? :-)

Anders rum ausgedrückt. Auf dem lokalen System (z.B. mit xampp) geht das nicht, bzw. sind dazu einige Klimmzüge notwendig. Den Test kannst du dann nur auf dem echten Webspace machen. Solange Du noch lokal testest lass Dir die Variablen ausgeben und fertig.

Ich hoffe, Dir damit halbwegs geholfen zu haben.

Gruß thuemmy
 
PHP:
$sender =  $_POST['email'];
$header = "From:" . $sender;
Wenn du dich nicht unglücklich machen möchtest, würde ich Daten die vom User eingegeben werden NIEMALS direkt in den Mailheader schreiben.


Wenn du das Script online stellt, zeige ich dir wieso :p

Tipp'n Gruß
 
Werbung:
ne also ich hab das formular auf den webspace geladen und wen ich das formular abschicke wird mir d er fehler oben angezeigt & die mail kommt nich t an..

@ franz
warum? beschreib mir das mal bitte..
bisher gabs da noch kein problem mit.
wie sollte ich das anders machen?
wie gesagt, ich mach das noch nicht lang und php ist noch nicht so mein ding..^^
 
ne also ich hab das formular auf den webspace geladen und wen ich das formular abschicke wird mir d er fehler oben angezeigt & die mail kommt nich t an..

@ franz
warum? beschreib mir das mal bitte..
bisher gabs da noch kein problem mit.
wie sollte ich das anders machen?
wie gesagt, ich mach das noch nicht lang und php ist noch nicht so mein ding..^^

=) ist ja auch garkein Problem.

Also, wenn du Usereingaben direkt in den Header, ungerpüft übernimmst, machst du dein Formular angreifbar für Hacker. Es ist möglich deinen Email-Header mit den $_POST Variablen so zu manipulieren, sodass man dein Formular als Massenmailversand nutzen kann.



Warum deine Email nicht versendet werden, könnte an 3 Stellen liegen:
1. Du hast in deinem PHP Script irgendwelche Syntaxfehler.​

2. Dein PHP-Mailheader ist nicht aussreichend mit Informationen für den POP3 bzw. SMTP-Server bestückt.Vielleicht verwendest du mal diesen Header. Hier wird charset und encoding mitgesendet.
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$header .= "Organization: ".$org_var."\r\n";
$header .= "Content-Transfer-encoding: 8bit\r\n";
$header .= "To: ".$ToReceiver."\r\n";
$header .= "From: ".$org_var." <".$FromSender.">\r\n";
$header .= "Reply-To: ".$org_var." <".$FromSender.">\r\n";

3. Dein Webserver hat einfach keine anbindungen zu einen POP3 oder SMTP-Server.​
 
Werbung:
Zurück
Oben