Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „php form AGB checkbox, bitte um Hilfe“

lyzarr

Noch nicht viel geschrieben

Hallo liebe Leute,

ich bin ein absoluter php-noob und habe aus einem tutorial das nachfolgende php form entnommen und leicht angepaßt.
Ich habe eine checkbox eingefügt, bin aber leider absolut nicht in der Lage diese via php überprüfen zu lassen.
Ziel ist, daß die mail nur abgesendet wird, wenn die checkbox angewählt wurde (AGB bestätigt), andernfalls soll eine Fehlermeldung erscheinen.

Ich bitte Euch um Unterstützung - was muß ich dem code hinzufügen, damit es, formal zum bisherigen form passend, diese Überprüfung durchführt und ggf. eine Fehlermeldung ausgibt.


PHP:
<?php 
 
$mail_to="toreador@gmx.net"; 
$from_name=$_POST['fromname']; 
$from_mail=strtolower($_POST['frommail']); 
$mail_subject="Anfrage";
$from_phone=$_POST['fromphone']; 
$mail_text=$_POST['mailtext']; 
$send=$_POST['s']; 
    $inhalt = "Name: ".$from_name."\n"; 
    $inhalt .= "Telefon: ".$from_phone."\n"; 
    $inhalt .= "E-Mail: ".$from_mail."\n";
    $inhalt .= "Nachricht: ".$mail_text."\n";
if(trim($from_name)=="") $err_text.="Bitte geben Sie Ihren Namen ein.<br>"; 
if(trim($from_mail)=="") 
  $err_text.="Bitte geben Sie Ihre E-Mail-Adresse ein.<br>"; 
else 
  if(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$",$from_mail)) 
    $err_text.="Bitte geben Sie eine gültige E-Mail-Adresse ein.<br>"; 
if(trim($mail_text)=="") $err_text.="Bitte geben Sie Ihre Nachricht ein.<br>"; 
 
// *** Zu langen Text abschneiden *** 
if(strlen($mail_text)>1000) { 
  $mail_text=substr($mail_text,0,1000)."... (Text wurde gekürzt!)"; 
} 
$from_name=str_replace(chr(34),"''",$from_name); 
$from_phone=str_replace(chr(34),"''",$from_phone); 
$from_name=stripslashes($from_name); 
$from_mail=stripslashes($from_mail); 
$from_phone=stripslashes($from_phone); 
$mail_text=stripslashes($mail_text); 
if(($send=="1") && (isset($err_text))) { 
  echo "<span class='headline'>Fehler:</span>"; 
  echo "<span class='fehler'><br>$err_text</span>"; 
} 
if(($send!="1") || (isset($err_text))) 
{ 
?>
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <font class="textklein"> Ihr Name: <br>
    <input type="text" class="input_kontakt" name="fromname" size=27 maxlength=100 value="<?php echo $from_name; ?>">
    <br>
    Ihre E-Mail Adresse: <br>
    <input type="text" class="input_kontakt" name="frommail" size=27 maxlength=100 value="<?php echo $from_mail; ?>">
    <br>
    Ihre Telefonnummer: <br>
    <input type="text" class="input_kontakt" name="fromphone" size=27 maxlength=100 value="<?php echo $from_phone; ?>">
    <br>
    Ihre Nachricht: <br>
    <textarea cols="46" rows="4" class="input_kontakt" name="mailtext"><?php echo $mail_text; ?></textarea>
    <br>
    <input type="checkbox" name="agb" value="checkbox">
    Hiermit best&auml;tige ich, dass ich die Allgemeinen Gesch&auml;ftsbedingungen 
    gelesen und akzeptiert habe
    <br>
    <input type="hidden" value="1" name="s">
    <input type="submit" class="input_kontakt" value="Nachricht senden" name="submit">
    </font> 
  </form>
 
<?php 
} else { 
  $header="From: $from_name <$from_mail>\n"; 
  $header.="Reply-To: $from_mail\n"; 
  $header.="X-Mailer: PHP-FormMailer\n"; 
  $header.="Content-Type: text/plain"; 
  $mail_date=gmdate("D, d M Y H:i:s")." +0000"; 
  $send=0; 
  if(@mail($mail_to,$mail_subject,$inhalt,$header)) 
  { 
    echo "<br><span class='text'>Die Daten werden verarbeitet.</span>"; 
    echo "<meta http-equiv='refresh' content='0; url=kontakt_erfolg.html'>"; 
  }else{ 
    echo "<p><b>Beim Versenden der Nachricht ist ein Fehler aufgetreten!</b></p>"; 
    echo "<p><a href=\"".$_SERVER['PHP_SELF']."?from_name=$from_name&from_mail=$from_mail&mail_subject=$mail_subject&mail_text="; 
    echo urlencode($mail_text)."\">Zurück zum Formular</a></p>"; 
  } 
} 
?>


Vielen Dank im Voraus,

Lyzarr
 

ChrisvA

Aktives Mitglied

AW: php form AGB checkbox, bitte um Hilfe

Ganz einfach gesagt: if($_POST['agb']=='checkbox'){//Checkbox ausgeüllt} else{ echo "Checkbox nicht ausgefüllt";}
Das 'checkbox' kommt vom value-Teil deiner Checkbox.
 

saila

Moderatorle

AW: php form AGB checkbox, bitte um Hilfe

Ganz einfach gesagt: if($_POST['agb']=='checkbox'){//Checkbox ausgeüllt} else{ echo "Checkbox nicht ausgefüllt";}
Das 'checkbox' kommt vom value-Teil deiner Checkbox.

Korrekt und somit direkt fehlerhaftes PHP vermittelt! Darüber hinaus reicht
PHP:
<?php 
if(isset($_POST['agb'])) {
 # weiter
} else {
 # stop
}
?>

völlig aus.
 

lyzarr

Noch nicht viel geschrieben

AW: php form AGB checkbox, bitte um Hilfe

Danke ersteinmal für die Antwort ChrisvA.
Aber das alleine wird ja noch nicht reichen in den Abfrage-Teil einzubauen. Das "$_POST" muß ja sicherlich noch auf einen entsprechenden Eintrag im oberen Bereich verweisen, etc.

Als php-Vollpfosten ;) hoffe ich auf eine ausführlichere, möglichst *****ensichere Ausführung. Es wäre großartig, wenn mir Jemand das ganz genau "vorkauen" könnte - dann verstehe ich auch die Zusammenhänge.


[edit]
Danke saila, ich suche aber nach einer Lösung, die die bisherige Funktionsweise des scripts aufgreift. Also einen Fehlertext ausgibt, wenn die AGB-checkbox nicht angehakt wurde. Wie es ja auch geschieht, wenn kein Text, keine eMail-Adresse, etc. eingegeben wurde.
Also schon eher in die Richtung wie von ChrisvA gepostet.
Irgendwie in etwa so:

if($_POST['agb']=="") $err_text.="Bitte bestätigen Sie, daß Sie die AGB gelesen haben.";

Davon abgesehen, daß es formal sicher nicht richtig ist, fehlt da garantiert auch noch einiges an code an anderer Stelle des scripts.

Daher nochmal die große Bitte, das script um die notwendigen Zeilen erweitert zu posten.

[edit 2]

Genau mit der zuvor von mir geposteten Zeile funktioniert es tatsächlich - unglaublich.
Dennoch, ist daran irgendetwas formal falsch oder bedenklich ?
Könnte es beispielsweise zu Inkompatibilitäten mit unterschiedlichen browsern/Versionen kommen, da noch etwas fehlt oder unsauber ist ?

Vielen, vielen Dank und Gruß,

Lyzarr
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
175.158
Beiträge
2.581.869
Mitglieder
67.224
Neuestes Mitglied
Aliyah79
Oben