2011-02-08 39 views
0

我有一個工作的PHP留言腳本。它只有1個文件。我試圖證明它,只有一個錯誤:如何添加動作標籤以形成?

Line 147, Column 36: required attribute "action" not specified 
<form method="post" name="blogform"> 

現在的代碼是這樣的,我相信我會需要將文件拆分兩個,這樣我可以爲行動標籤創建一個文件但我只是不知道如何。任何幫助深表感謝。

<?php 
session_start(); 
include("../../4a/inc/opendb.inc.php"); 

if(isset($_POST['send'])) //checks if $_POST variable "is set" 

if(isset($_SESSION["ellenorzo"]) && !empty($_SESSION["ellenorzo"]) && $_SESSION["ellenorzo"]==$_POST["code"]){  

    $name = trim($_POST['name']); //eliminating whitespaces 
    $email = trim($_POST['email']); 
    $message = addslashes(trim($_POST['message'])); 

    $query = "INSERT INTO blog (name, email, message, date) " . 
      "VALUES ('$name', '$email', '$message', NOW())"; 
    mysql_query($query) or die('Hey, something is wrong!' . mysql_error()); 

    header('Location: ' . $_SERVER['REQUEST_URI']); 
    exit; 
} 
?> 

<?php 
include('../../4a/inc/head.inc.php'); 
?> 

<body style="color: #ffffff;"> 
    <div class="mainblog"> 
     <div class="top"> 
      <div class="menu"> 
       <?php 
       include('../menu.inc.php'); 
       ?> 
      </div> 
     </div> 

<div class="middleblog"> 

<form method="post" name="blogform"> 
<input name="name" id="name" class="nameblog" type="text" /> 
<img src="../../4a/img/main/name.jpg" class="name" alt="Name" /> 
<input name="email" id="email" class="emailblog" type="text" /> 
<img src="../../4a/img/main/email.jpg" class="email" alt="Email" /> 
<textarea name="message" id="message" class="messageblog" rows="6" cols="6" onkeyup="return ismaxlength(this)"> 
</textarea> 
<img src="../../4a/img/main/message.jpg" class="message" alt="Message" /> 
<input name="send" value="submit" id="send" class="sendblog" type="image" src="../../4a/img/main/send.jpg" onclick="return checkform();" /> 
<input type="hidden" name="send" value="submit" /> 
<div class="text_check_code"> 
<font class="text"> 
Enter the characters as they are shown below. 
</font> 
</div> 
<img src="../../4a/inc/secure.inc.php" class="img_check_code" alt="Nospam" /> 
<input name="code" class="input_check_code" /> 
</form> 

<?php 
       $rowsperpage = 10; 
       $pagenumber = 1; 

       if(isset($_GET['page'])) 
       { 
        $pagenumber = $_GET['page']; 
       } 
       $offset = ($pagenumber - 1) * $rowsperpage; 

       $query = "SELECT id, name, email, message, date ". 
         "FROM blog ". 
         "ORDER BY id DESC ". 
         "LIMIT $offset, $rowsperpage"; 
       $result = mysql_query($query) or die('Hey, something is wrong!. ' . mysql_error()); 

       if(mysql_num_rows($result) == 0) 
       { 
       print("<br /><br /><br /><br /><br /><br /><br /><br />The blog is empty."); 
       } 
       else 
       { 
        while($row = mysql_fetch_array($result)) 
        { 
         list($id, $name, $email, $message, $date) = $row; 


             $name = htmlspecialchars($name); 
             $email = htmlspecialchars($email); 
         $message = htmlspecialchars($message); 
         $message = stripslashes(nl2br($message)); //real breaks as user hits enter 

       ?> 

      <br /> 
      <div class="blogentries"> 
        <b><a href="mailto:<?=$email?>" class="index"><?=$name?></a></b> 
        <br /> 
        <?=$message?> 
        <br /> 
        <i><?=$date?></i> 
      </div> 
      <br /> 

      <?php 
       } //closing while statement 

      $query = "SELECT COUNT(id) AS numrows FROM blog"; 
      $result = mysql_query($query) or die('Hey, something is wrong!. ' . mysql_error()); 
      $row  = mysql_fetch_array($result, MYSQL_ASSOC); 
      $numrows = $row['numrows']; 

      $maxpage = ceil($numrows/$rowsperpage); //rounding up any integer eg. 4,1=5 
      $nextlink = ''; 

      if($maxpage > 1) 
      { 
       $self  = $_SERVER['PHP_SELF']; 
       $nextlink = array(); 
       for($page = 1; $page <= $maxpage; $page++) 
       { 
        $nextlink[] = "<a href=\"$self?page=$page\">$page</a>"; 
       } 
       $nextlink = "Next: " . implode(' » ', $nextlink); //returns all elements of an array as a string 
      } 
      include ("../../4a/inc/closedb.inc.php"); 
      ?> 
      <br /> 
      <div class="nextlink"> 
      <?=$nextlink;?> 
      </div> 
     </div> 
     <br /> 
     <br /> 
     <div class="bottomblog"> 
      <?php 
      require_once('../../4a/inc/copyright.inc.php'); 
      ?> 
     </div> 
     <br /> 
     <br /> 
    </div> 
    <?php //closing the else statement 
    } 
    ?> 

<?php 
include('../../4a/inc/footer.inc.php'); 
?> 

回答

1

action屬性指定表單發送到的鏈接。如果調用的形式本身,你可以讓它空白:

<form action="" method="post" name="blogform"> 
+0

確保POST是W3標準中定義的所有上限也是一個好主意......我注意到,如果情況並非如此,Firefox可能會有問題。 (最好是安全而不是遺憾) – silvster27 2013-01-03 19:41:47

0

action標籤告知形式,其中提交數據。如果它留空,它會嘗試將數據提交到當前的php頁面。如果它給你帶來麻煩,也許你需要指定它並將它指向生成表單的php頁面。

0

在您提供的代碼中,處理新插入的代碼位於此頁面的頂部,因此您應該將action標記設置爲頁面的名稱。

順便說一下,你應該確保你的輸入全部清除;在插入它們之前使用trim()正在尋求麻煩。有關此主題的更多信息,請參閱here