2014-10-20 201 views
-4

我似乎無法弄清楚錯誤是什麼。請幫忙。PHP未定義的變量:errorString

說明:未定義變量:行中 /Applications/XAMPP/xamppfiles/htdocs/finalproject/donate/thankyou.php Errorstring,則95

說明:未定義變量:messageString在 /應用/ XAMPP /xamppfiles/htdocs/finalproject/donate/thankyou.php 上線99

<?php 

require "config.php"; 
require "connect.php"; 

if(isset($_POST['submitform']) && isset($_POST['txn_id'])) 
{ 
    $_POST['nameField'] = esc($_POST['nameField']); 
    $_POST['websiteField'] = esc($_POST['websiteField']); 
    $_POST['messageField'] = esc($_POST['messageField']); 

    $error = array(); 

    if(mb_strlen($_POST['nameField'],"utf-8")<2) 
    { 
     $error[] = 'Please fill in a valid name.'; 
    } 

    if(mb_strlen($_POST['messageField'],"utf-8")<2) 
    { 
     $error[] = 'Please fill in a longer message.'; 
    } 

    if(!validateURL($_POST['websiteField'])) 
    { 
     $error[] = 'The URL you entered is invalid.'; 
    } 

    $errorString = ''; 
    if(count($error)) 
    { 
     $errorString = join('<br />',$error); 
    } 
    else 
    { 
     mysql_query(" INSERT INTO dc_comments (transaction_id, name, url, message) 
         VALUES (
          '".esc($_POST['txn_id'])."', 
          '".$_POST['nameField']."', 
          '".$_POST['websiteField']."', 
          '".$_POST['messageField']."' 
         )"); 

     if(mysql_affected_rows($link)==1) 
     { 
      $messageString = '<a href="donate.php">You were added to our donor list! &raquo;</a>'; 
     } 
    } 
} 

?> 

<!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"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Thank you!</title> 

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

</head> 

<body class="thankyouPage"> 

<div id="main"> 
    <h1>Thank you!</h1> 
    <h2>Add Yourself to our Donor Section</h2> 

    <div class="lightSection"> 
     <form action="" method="post"> 
      <div class="field"> 
       <label for="nameField">Name</label> 
       <input type="text" id="nameField" name="nameField" /> 
      </div> 

      <div class="field"> 
       <label for="websiteField">Web Site</label> 
       <input type="text" id="websiteField" name="websiteField" /> 
      </div> 

      <div class="field"> 
       <label for="messageField">Message</label> 
       <textarea name="messageField" id="messageField"></textarea> 
      </div> 

      <div class="button"> 
       <input type="submit" value="Submit" /> 
       <input type="hidden" name="submitform" value="1" /> 
       <input type="hidden" name="txn_id" value="<?php echo $_POST['txn_id']?>" /> 
      </div> 
     </form> 

     <?php 
     if($errorString) 
     { 
      echo '<p class="error">'.$errorString.'</p>'; 
     } 
     else if($messageString) 
     { 
      echo '<p class="success">'.$messageString.'</p>'; 
     } 
     ?> 

    </div> 


</body> 
</html> 


<?php 

function esc($str) 
{ 
    global $link; 

    if(ini_get('magic_quotes_gpc')) 
      $str = stripslashes($str); 

    return mysql_real_escape_string(htmlspecialchars(strip_tags($str)),$link); 
} 

function validateURL($str) 
{ 
    return preg_match('/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:\/~\+#]*[\w\-\@?^=%&amp;\/~\+#])?/i',$str); 
} 
?> 
+0

嘗試更換'如果($ Errorstring,則)'和'如果(isset( $ errorString))' – georg 2014-10-20 09:20:35

+0

如果你輸入了你的第一個'if'語句,你只能設置'$ errorString'和'$ messageString'。因此,如果未輸入此語句,則不會創建這些變量。 – h2ooooooo 2014-10-20 09:21:09

+0

'我似乎無法弄清楚有什麼錯誤,請幫助'不是一個問題。 – hek2mgl 2014-10-20 09:21:26

回答

1

如果您正在使用外部的主,如果Errorstring,則聲明,之前進行初始化。

移動$errorString = '';

if(isset($_POST['submitform']) && isset($_POST['txn_id']))

+1

哇,實際上工作!謝啦!!! – Shol 2014-10-20 09:26:00

0

你是你的第一個if語句,這意味着如果$_POST['submitform']$_POST['txn_id']未設置也不會被定義中定義$errorString

然後,您在此if語句後使用$errorsString。你應該確保$errorString在正確的範圍定義:

$errorString = ''; 
if(isset($_POST['submitform']) && isset($_POST['txn_id'])) 
{ 
    // ... 
0

變化

if($errorString) { 
    echo '<p class="error">'.$errorString.'</p>'; 
} 
else if($messageString) 
{ 
    echo '<p class="success">'.$messageString.'</p>'; 
} 

if(isset($errorString)) { 
    echo '<p class="error">'.$errorString.'</p>'; 
} elseif (isset($messageString)) { 
    echo '<p class="success">'.$messageString.'</p>'; 
}