• hallo,ich habe mal wieder eine frage,
    habe ein Shop Installiert, da muss ich safe_mode off und register_globals auf off stellen, dann klappt aber mein Kontaktformular nicht mehr, woran liegt das.
    g
    topkick

  • Ja, moment, wo ist meine geheimnisvolle Code-Kugel schon wieder ... achja, die ist ja auf der letzten Fete kaputt gegangen ... so ein Mist.

    Zu Deutsch: Wenn du uns den Code deines Formulars nicht zeigst, dann könnten wir hier auch Samba tanzen, das wär genau so hilfreich.

    Aber ich setze einfach mal darauf, dass du einfach $name anstatt [/i]$_POST['name'][/i] genommen hast.

  • natürlich seit Ihr keine Hellseher
    hier ist das send Script
    =========================
    <?php

    $fehler="";

    $absenderemail=trim($absenderemail);

    $absenderemail=str_replace(" ","",$absenderemail);

    $svorkommen=strrpos($absenderemail, "@");

    $svorkommen2=strrpos($absenderemail, ".");

    if ($svorkommen==0 OR $svorkommen2==0)

    {

    $fehler.="Keine richtige Email-Adresse !!!

    ";

    }

    if (strlen($absenderemail)<10)

    {

    $fehler.="Bitte Email-Adresse prüfen

    ";

    }


    if (($aname=="ja") AND (strlen($absendername)<6))

    {

    $fehler.="Bitte Name angeben

    ";

    }


    if (($telefon=="ja") AND (strlen($absendertelefon)<6))

    {

    $fehler.="Bitte Telefonnummer angeben

    ";

    }


    if (strlen($absendermitteilung)<10)

    {

    $fehler.="Bitte im Feld Mitteilung etwas schreiben

    ";

    }


    if (strlen($fehler)>1)

    {

    echo '<font color="#FF0000">Ihre Eingaben sind falsch oder unvollständig !

    </font>';

    echo $fehler;

    echo '<a href="javascript:history.back()">';

    echo "Ich möchte meine Angaben vervollständigen";

    echo "</a>";

    exit;

    }


    $betreff="Anfrage von ";

    if ($aname=="ja")

    {

    $betreff.=$absendername;

    $betreff.=" / ";

    }

    $betreff.=$absenderemail;

    $absendermitteilung=nl2br($absendermitteilung);

    $text=$absendermitteilung;

    $text.="

    ";

    $text.="Grund der Anfrage:";

    $text.=$absendergrund;

    $text.="
    ";

    if ($aname=="ja")

    {

    $text.="Im Formular angegebener Name: ";

    $text.=$absendername;

    $text.="
    ";

    }


    if ($adresse=="ja")

    {

    $text.="Im Formular angegebene Adresse: ";

    $text.=$absenderstrasse;

    $text.=" / ";

    $text.=$absenderort;

    $text.="
    ";

    }


    if ($telefon=="ja")

    {

    $text.="Im Formular angegebene Telefonnummer: ";

    $text.=$absendertelefon;

    $text.="
    ";

    }


    $header="From:";

    $header.=$absenderemail;

    $header.="\r\nContent-Type:text/html";


    mail($emailempfaenger, $betreff, $text, $header);

    echo '<font size="+4">Versendet</font>
    ';

    echo "Danke für Ihren Event er wird in kürze hier erscheinen.
    ";

    echo " ";


    echo "

    ";

    exit;

    ?>


    hier das Formular Script:
    =====================
    <?php $emailempfaenger="meine adresse"; $name="ja"; $adresse="ja"; $telefon="nein"; $name=strtolower($name); $name=trim($name); $adresse=strtolower($adresse); $adresse=trim($adresse); echo '<font size="+1">Kontaktformular - Große und Kleine Events</font>
    '; echo '<form action="formular-senden.php" method="post" >'; echo '<input type="Hidden" name="emailempfaenger" value="'; echo $emailempfaenger; echo '">'; echo '<input type="Hidden" name="aname" value="'; echo $name; echo '">'; echo '<input type="Hidden" name="adresse" value="'; echo $adresse; echo '">'; echo '<table >'; echo '<tr>'; echo '<td>'; if ($name=="ja") { echo "Ihr Name:"; } echo '</td>'; echo '<td>'; echo '<input type="Text" name="absendername" size="40" maxlength="40">'; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<td>'; echo "Ihre Email Adresse:"; echo '</td>'; echo '<td>'; echo '<input type="Text" name="absenderemail" size="40" maxlength="80">'; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<td>'; echo "Event melden:"; echo '</td>'; echo '<td>'; echo '<select name="absendergrund" size="1">'; echo '<option value="event melden">Ihr Event</option>'; echo '</select>'; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<td>'; echo "Wo-Wann:"; echo '</td>'; echo '<td>'; echo '<textarea name="absendermitteilung" cols="35" rows="10"></textarea>'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '<font size="-2">'; echo ' </font>
    '; echo '<input type="Submit" name="" value="Absenden">'; echo '</form>'; ?>

    g
    topkick

  • So sollte es Funktionieren:

  • Jup, genau wie ich vermutete.
    Du hast nun 2 Möglichkeiten.
    Entweder du benutzt extract($_POST); oder du schreibst alle Variablen, die vom Formular gesendet werden, das erste Mal in $_POST['variable'] um.
    Beispiel:

    Code
    $absenderemail=trim($_POST['absenderemail']);
    Code
    if (($_POST['telefon']=="ja") AND (strlen($_POST['absendertelefon'])<6))

    In PHP stehen alle Werte, die mittels POST an das Script übergeben wurden im Array $_POST[] zur Verfügung.
    Bei register_globals kann man auch so drauf zugreifen, aber das ist eine Sicherheitslüscke.

    Ich hoffe du hast verstanden, was ich meine, andernfalls erkläre ich es morgen ausführlicher =)

    Edit: Zu spät ...

  • Der Darky ist ja doch Hellseher :D
    falsch:

    Code
    $absenderemail=trim($absenderemail);

    Richtig:

    Code
    $absenderemail=$_POST['absenderemail'];
    $absenderemail=trim($absenderemail);

    Das musst du dann mit allen Variablen machen, die per post kommen.

    Gruß,
    Jojo


  • Die Antwort von Dark ist eigentlich besser als meine, auch wenn sie später kommt =) Davon hat er mehr gelernt.

    die Methode mit extract($_PHP); gefällt mir =) Hätte viel Tipparbeit gespart.

  • Stimmt, man kann ja auch von nem externen Script darauf zugreifen. Naja, ich stoppe meine Offtopic sünden gleich wieder, sonst wird das ein kurzer besuch auf dem Forum ;)

    Gute nacht,
    -Lukas