2017-01-03 2 views
2

Ich versuche, Captcha mit meinem benutzerdefinierten Formular in WordPress hinzuzufügen. also verwende ich dafür das Plugin Securimage-WP CAPTCHA. Das Plugin funktioniert einwandfrei, aber auf meiner Seite, auf der ich dieses Captcha brauche, habe ich if(is_user_logged_in()) verwendet, um verschiedene Formulare für angemeldete oder abgemeldete Benutzer anzuzeigen. es gibt mir einen Fehler Schwerwiegender Fehler: Aufruf zu undefinierter Funktion show_form(). Bitte hilf mir, von diesem Problem wegzukommen. Danke im Voraus. mein aktueller Code ist unten:wie man einfaches Bild Captcha mit benutzerdefinierten Formularen in WordPress

<?PHP 
/* Template Name: bbb */ 

get_header(); 
if(is_user_logged_in()){ 
//echo "<script> window.location.href='".site_url()."'; </script>"; 


if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
$values = array(); 
$errors = array(); 
$values['name'] = @trim(stripslashes($_POST['contact_name'])); 
$values['email'] = @trim(stripslashes($_POST['email'])); 
$values['message'] = @trim(stripslashes(strip_tags($_POST['message']))); 
if (empty($values['name'])) $errors['contact_name'] = 'Please enter your name'; 
if (!preg_match('/^(?:[\w\d-]+\.?)[email protected](?:(?:[\w\d]\-?)+\.)+\w{2,4}$/i', $values['email'])) $errors['email'] = 'The email address supplied is invalid'; 
if (strlen($values['message']) < 20) $errors['message'] = 'Please enter a message longer than 20 characters'; 
if (sizeof($errors) == 0) { 
    if (function_exists('siwp_check_captcha')) { 
     // make sure plugin is enabled before calling function 
     if (false == siwp_check_captcha($err)) { 
      $errors['captcha'] = $err; 
     } 
    } 
} 
if (sizeof($errors) > 0) { 
    show_form($errors, $values); 
} else { 
    // form code goes here, no errors & captcha was correct 
    echo "<span style='font-size: 1.2em'><strong><em>Congrats, you win the captcha solving challenge!</em></strong>"; 
} 
}//if condition end 
else { 
show_form(); 
} 
?> 

<?php function show_form($errors = array(), $values = array()) { ?> 

<?php if (sizeof($errors) > 0): ?> 
<p>There was a problem with your submission. Please correct the following errors:</p> 
<ul> 
<?php foreach($errors as $error): ?> 
<li><?php echo $error ?></li> 
<?php endforeach; ?> 
</ul> 
<?php endif; ?> 

<form method="post" action="<?php echo $_SERVER['REQUEST_URI'] ?>"> 
<div> 
    <label for="contact_name">Your Name: 
    <input type="text" name="contact_name" id="contact_name" class="input" value="<?php echo htmlspecialchars(stripslashes(@$values['name'])) ?>" size="20" /></label> 
</div> 
    <br /> 
<div> 
    <label for="email">E-mail: 
    <input type="email" name="email" id="email" class="input" value="<?php  echo htmlspecialchars(stripslashes(@$values['email'])) ?>" size="25" /></label> 
</div> 
    <br /> 
<div> 
    <label for="message">Message:<br /><pre style="border: 0; margin: 0; padding: 0"><textarea name="message" id="message" class="input" rows="8" style="width: 100%"><?php echo htmlspecialchars(stripslashes(@$values['message'])) ?></textarea></pre></label> 
</div> 
    <br /> 
      <?php echo do_shortcode('[siwp_show_captcha]'); ?> 
    <p>&nbsp;</p> 
    <p> 
      <input type="submit" value="Send Message" /> 
    </p> 
</form> 
<?php }}//user logged in if end 
get_footer(); ?> 
+0

Haben Sie 'show_form' Funktionen definiert? – purvik7373

+0

ja Funktion show_form ($ errors = array(), $ values ​​= array()) – Archana

+0

Ich meine, haben Sie Ihre 'show_form' Funktion definiert? Wie 'function show_form() {echo" ..... "; } '. – purvik7373

Antwort

1
<?php 

    function show_form($errors = array(), $values = array()) { ?> 

      <?php if (sizeof($errors) > 0): ?> 
      <p>There was a problem with your submission. Please correct the following errors:</p> 
      <ul> 
      <?php foreach ($errors as $error): ?> 
        <li><?php echo $error ?></li> 
      <?php endforeach; ?> 
      </ul> 
     <?php endif; ?> 

     <form method="post" action="<?php echo $_SERVER['REQUEST_URI'] ?>"> 
      <div> 
       <label for="contact_name">Your Name: 
        <input type="text" name="contact_name" id="contact_name" class="input" value="<?php echo htmlspecialchars(stripslashes(@$values['name'])) ?>" size="20" /></label> 
      </div> 
      <br /> 
      <div> 
       <label for="email">E-mail: 
        <input type="email" name="email" id="email" class="input" value="<?php echo htmlspecialchars(stripslashes(@$values['email'])) ?>" size="25" /></label> 
      </div> 
      <br /> 
      <div> 
       <label for="message">Message:<br /><pre style="border: 0; margin: 0; padding: 0"><textarea name="message" id="message" class="input" rows="8" style="width: 100%"><?php echo htmlspecialchars(stripslashes(@$values['message'])) ?></textarea></pre></label> 
     </div> 
      <br /> 
     <?php echo do_shortcode('[siwp_show_captcha]'); ?> 
      <p>&nbsp;</p> 
      <p> 
        <input type="submit" value="Send Message" /> 
      </p> 
     </form> 
    <?php } ?> 

bitten Sie diese Funktionen in Ihrem aktuellen Thema functions.php bewegen? Und nach Überprüfung. Ich hoffe es funktioniert gut für dich.

+0

danke # purvik7373 – Archana

Verwandte Themen