Avatar billede itmouse Nybegynder
15. maj 2011 - 18:10 Der er 4 kommentarer og
1 løsning

Åben php error beskeder i en div-boks, frem for nyt vindue

Som en del af en email-sender fra en hjemmeside har jeg koden forneden.

Hvordan får jeg error-beskederne til at vise sig i en <div> boks ved siden af mine "forms" (som jeg har i et andet dokument), frem for at beskederne åbner sig i et helt nyt vindue?

<?php
if(isset($_POST['Email_Address'])) {
   
    include 'lite_settings.php';
   
    function died($error) {
        echo "Sorry, but there were error(s) found with the form you submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }
   
    if(!isset($_POST['Full_Name']) ||
        !isset($_POST['Email_Address']) ||
        !isset($_POST['Telephone_Number']) ||
        !isset($_POST['Your_Message'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
    }
   
    $full_name = $_POST['Full_Name']; // required
    $email_from = $_POST['Email_Address']; // required
    $telephone = $_POST['Telephone_Number']; // not required
    $comments = $_POST['Your_Message']; // required
   
    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(preg_match($email_exp,$email_from)==0) {
      $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
  if(strlen($full_name) < 2) {
      $error_message .= 'Your Name does not appear to be valid.<br />';
  }
  if(strlen($comments) < 2) {
      $error_message .= 'The Comments you entered do not appear to be valid.<br />';
  }
 
  if(strlen($error_message) > 0) {
      died($error_message);
  }
    $email_message = "Form details below.\r\n";
   
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
   
    $email_message .= "Full Name: ".clean_string($full_name)."\r\n";
    $email_message .= "Email: ".clean_string($email_from)."\r\n";
    $email_message .= "Telephone: ".clean_string($telephone)."\r\n";
    $email_message .= "Message: ".clean_string($comments)."\r\n";
   
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
header("Location: $thankyou");
?>
<script>location.replace('<?php echo $thankyou;?>')</script>
<?php
}
die();
?>
Avatar billede Slettet bruger
15. maj 2011 - 18:33 #1
Ved at foretage valideringen (også) i javascript i browseren, sådan at formens felter checkes inden de sendes til serveren.

Er der noget galt, kan du fortælle brugeren det, som du synes:
- en alert, eller en box ved siden af formen, eller én ved hvert felt..

Men behold valideringen på serveren, så den kan fange evt. hackere der går udenom din valideringen i browseren.
Avatar billede Probie Nybegynder
16. maj 2011 - 13:38 #2
ved at ligge valideringen i samme dokument som din form ligger i hvis du ligger hele valideringen oven over din form og istedet for at skrive <form action="hvor din validering nu ligger"> så lad action være tom (action="") så bliver du på samme side.

hvis du vil have din validering ud for hver felt kan det gøres på den her måde:

<?php

  if(isset($_POST['Email_Address'])) {

      include 'lite_settings.php';

?>

      <form action="" method="post">

            <input type="text" name="name"> <?php if(empty($_POST['name'])){

                  echo "Feltet må ikke være tomt";

                  } ?>

      </form>

<?php

      din validering der skal ligge under form hvis der skal være det

?>
Avatar billede itmouse Nybegynder
23. maj 2011 - 08:45 #3
Tak for svar. I kan bare hver isæt smide et svar.
Avatar billede Probie Nybegynder
23. maj 2011 - 10:05 #4
det var så lidt :)
Avatar billede Slettet bruger
23. maj 2011 - 19:15 #5
S'gerne :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester