php表單提交程式的安全使用方法第1/2頁

來源:互聯網
上載者:User

用於顯示錯誤資訊和成功資訊,其實也可以直接echo出錯誤資訊,這裡我只是想我的出錯資訊頁面漂亮點,定義了一個頁面輸出的函數罷了。 複製代碼 代碼如下:<?php
// savecomment.php// 大家先不要看注釋,看完本文後,再回過頭來看
require ("config.php");
mysql_connect($servername,$dbusername,$dbpassword) or die ("資料庫連接失敗");
$name=$_POST['name'];
$content=$_POST['content'];
$blogid=$_POST['blogid'];
$datearray=getdate(time());
$date=date("Y-m-d h:i:s",$datearray[0]);
if (!empty($name) && !empty($content)){
//用empty函數判斷表單非空的話則往下。
if(strlen($name) > 20){
//通過非空判斷則開始判斷$name的長度。
error(“名字超過20個位元組(20個英文或10個漢字)<br>”);
}
f(!is_numeric($_POST['blogid'])){
error(“隱藏資料被非法修改過,請返回<br>”);
}
//由於$blogid待會是要放進select的,此變數是用來標示評論是屬於哪篇文章,它是int類型,雖說是隱藏變數,但攻擊者也是可以在本地修改遠程提交的,所以我們在放進select之前需要檢查類型。
$blogsql = "Select * FROM $comment_table Where blogid=$blogid"
$blogresult = mysql_db_query($dbname, $blogsql);
$blog = mysql_fetch_array($blogresult);
if(strlen($name) == strlen($blog[name]) && strlen($content) == strlen($blog[content])){
//查詢資料庫的兩個欄位的長度,因為名字長度可能相同,但兩個都相同正常情況下出現的幾率就相當小了,所以用&&同時判斷。
error(“你欲提交的內容評論裡已存在,請返回<br>”);
}
//下面就開始判斷時間間隔。更詳細的說明請看文章後面內容。
session_start();
if(session_is_registered("time") && time()-$_SESSION['time']<60*2){ error(“對不起,你兩次提交的時間間隔還不到2分鐘<br>”);
} else {
$sql="Insert INTO $comment_table(date,name,content,blogid) VALUES('$date','$name','$content','$blogid')"
mysql_db_query($dbname,$sql);
mysql_close();
$time=time();
session_register("time");
succeed(“評論提交成功<br>”);
}}
//結束非空的判斷
error(“你沒有填寫完所有表單<br>”);
?>

上面是一個記錄評論資料的檔案。表單如下: 複製代碼 代碼如下:<form action="savecomment.php" method="POST">
<input type="hidden" name="blogid" value="<?=$row[blogid]?>">
您的名字:<input name="name" type="text" size="20" maxlength="100">
評論內容:<textarea name="content" cols="60" rows="8"></textarea>
<input type="submit" name="Submit" value="提交"></form>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.