2016-11-16 4 views
0

Я выполняю этот учебник на YouTube о том, как сделать контактную форму (https://www.youtube.com/watch?v=9KS2QuFXIs8) и им в той части, где некоторые из моих PHP код не будет работать из-за ...Простая команда php не работает?

<?php else: ?> 
<p>Thank you for your Message!</p> 
<?php endif; ?> 

также

<?php if($form_complete === FALSE): ?> 

Остальная часть кода, приведенного ниже, использует работы php, поэтому я уверен, что это не сервер, а, возможно, тот факт, что приведенный выше код имеет двоеточие. Вот остальная часть кода.

<?php 
 

 
// Set email variables 
 
$email_to = '[email protected]'; 
 
$email_subject = 'Form submission'; 
 

 
// Set required fields 
 
$required_fields = array('fullname','email','comment'); 
 

 
// set error messages 
 
$error_messages = array(
 
'fullname' => 'Please enter a Name to proceed.', 
 
'email' => 'Please enter a valid Email Address to continue.', 
 
'comment' => 'Please enter your Message to continue.' 
 
); 
 

 
// Set form status 
 
$form_complete = FALSE; 
 

 
// configure validation array 
 
$validation = array(); 
 

 
// check form submittal 
 
if(!empty($_POST)) { 
 
// Sanitise POST array 
 
foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value)); 
 

 
// Loop into required fields and make sure they match our needs 
 
foreach($required_fields as $field) { 
 
// the field has been submitted? 
 
if(!array_key_exists($field, $_POST)) array_push($validation, $field); 
 

 
// check there is information in the field? 
 
if($_POST[$field] == '') array_push($validation, $field); 
 

 
// validate the email address supplied 
 
if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field); 
 
} 
 

 
// basic validation result 
 
if(count($validation) == 0) { 
 
// Prepare our content string 
 
$email_content = 'New Website Comment: ' . "\n\n"; 
 

 
// simple email content 
 
foreach($_POST as $key => $value) { 
 
if($key != 'submit') $email_content .= $key . ': ' . $value . "\n"; 
 
} 
 

 
// if validation passed ok then send the email 
 
mail($email_to, $email_subject, $email_content); 
 

 
// Update form switch 
 
$form_complete = TRUE; 
 
} 
 
} 
 

 
function validate_email_address($email = FALSE) { 
 
return (preg_match('/^[^@\s][email protected]([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE; 
 
} 
 

 
function remove_email_injection($field = FALSE) { 
 
return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field)); 
 
} 
 

 
?> 
 

 

 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
 
    <head> 
 

 
    <title>Contact Form</title> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 

 
    <link href="css/contactform.css" rel="stylesheet" type="text/css" /> 
 

 
    <script type="text/javascript"> 
 
     var nameError = '<?php echo $error_messages['fullname']; ?>'; 
 
     var emailError = '<?php echo $error_messages['email']; ?>'; 
 
     var commentError = '<?php echo $error_messages['comment']; ?>'; 
 
    </script> 
 

 
    </head> 
 

 
    <body> 
 
    <div id="formWrap"> 
 
     <div id="form"> 
 
     <?php if($form_complete === FALSE); ?> 
 
     <form> 
 
      <div class="row"> 
 
      <div class="label"> 
 
       Your Name 
 
      </div> 
 
      <div class="input"> 
 
       <input type="text" name="fullname" id="fullname" class="detail" value="<?php echo isset($_POST['fullname'])? $_POST['fullname'] : ''; ?>" /> 
 
       <?php if(in_array('fullname', $validation)): ?><span class="error"><?php echo $error_messages['fullname']; ?></span><?php endif; ?> 
 
      </div> 
 
      <div class="context"> 
 
       e.g. John Smith 
 
      </div> 
 
      </div> 
 
      <div class="row"> 
 
      <div class="label"> 
 
       Your Email 
 
      </div> 
 
      <div class="input"> 
 
       <input type="text" name="email" id="email" class="detail" value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" /> 
 
       <?php if(in_array('email', $validation)): ?><span class="error"><?php echo $error_messages['email']; ?></span><?php endif; ?> 
 
      </div> 
 
      <div class="context"> 
 
       We will not share your email. 
 
      </div> 
 
      </div> 
 
      <div class="row"> 
 
      <div class="label"> 
 
       Your Message 
 
      </div> 
 
      <div class="input"> 
 
       <textarea name="comment" id="comment" class="mess"><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?></textarea> 
 
       <?php if(in_array('comment', $validation)): ?><span class="error"><?php echo $error_messages['comment']; ?></span><?php endif; ?> 
 
      </div> 
 
      </div> 
 
      <div class="submit"> 
 
      <input type="submit" id="submit" name="submit" value="Send Message"> 
 
      </form> 
 
      </div> 
 
     <?php else: ?> 
 
     <p>Thank you for your Message!</p> 
 
     <?php endif; ?> 
 
     </div> 
 
    </div> 
 
    </body> 
 

 
</html>

+2

'if ($ form_complete === FALSE);' <- не должно быть ':'? –

+1

какая версия PHP вы используете? – RamRaider

+0

да да, я тестировал его, и он работал, но idk, если двоеточие изменило код или не –

ответ

-3

В PHP Вы должны использовать скобки для условных CodeBlocks.

<?php if ($form_complete === FALSE) { ?> 
<p>if-branch</p> 
<?php } else { ?> 
<p>Thank you for your Message!</p> 
<?php } ?> 

Но использование PHP-кода внутри html может быть очень запутанным. Попробуйте следующее:

<?php 
if ($form_complete === FALSE) { 
    // do something 
} else { 
    echo '<p>Thank you for your Message!</p>' 
} 
?> 
+0

Это лучше (imo), чтобы сделать это таким образом, но это далеко не так, как это должно быть сделано. –

+1

Хорошо, я изменил свою формулировку, но я все еще думаю, что это нехорошо, чтобы узнать версию if():. В большом проекте никто не использует это и еще более запутанно. Не привыкать к этому. Просто изучите скобки, ясность кода очень нужна – jenald

+0

Я использовал первый код и должен был отредактировать первый p, и он не дал мне ошибку, но idk, если он сработал или нет. \t \t \t \t \t \t

Спасибо за ваше сообщение!

\t \t

Смежные вопросы