【发布时间】:2014-02-22 16:22:06
【问题描述】:
下面,我粘贴了我发现使用 PHP、MySQL 和会话进行反击的最佳方法的代码。但我想知道有没有其他方法可以完成这个过程?或者这种方式只是在会话中进行反击的方式?我也想学习其他方法,如果你们知道,那将非常有帮助。
<?php
session_start();
include_once"db.inc.php";
$webpage=htmlspecialchars($_SERVER["REQUEST_URI"]);
$sql= "CREATE TABLE IF NOT EXISTS counter (
id int(4) NOT NULL auto_increment,
webpage varchar(90) NOT NULL,
visitors int(11) NOT NULL default '1',
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1";
mysql_query($sql);
$result=mysql_query("SELECT * FROM counter WHERE webpage='$webpage'");
$num_rows= mysql_num_rows($result);
if ($num_rows== 0){
mysql_query("INSERT INTO counter (id, webpage, visitors)
VALUES ('','$webpage','1')");
}else{
if (!isset($_SESSION['webpage'])){$_SESSION['webpage']= 0;
mysql_query("UPDATE counter SET visitors=visitors+'1' WHERE webpage='$webpage'");}}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Just a test </title>
</head>
<body>
<?php
$result=mysql_query("SELECT * FROM counter WHERE webpage='$webpage'");
$row=mysql_fetch_assoc($result);
$n=$row['visitors'];
$l=9-strlen($n);
$z=substr('',0,$l);
$c="Counter: ".$z.$n;
echo "<div class='counter'>".$c."</div>";
mysql_close();
//session_unset();
//session_destroy();
?>
</body>
</html>
【问题讨论】:
-
这里是题外话。 codereview 有一个不同的 stackexchange 站点:codereview.stackexchange.com
-
“最佳方式”完全取决于“你”。没有“最好的方法”;但是,有些方法比另一种方法更有效。你只需要测试不同的方法,看看哪些方法能胜出。 (给 Waskiwee Wabbit 换肤的方法不止一种)
-
强制性建议,Don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial. -
那里有两个巨大的、巨大的安全漏洞。请告诉我这还没有生产。 (另外,将其发布在 codereview 上,因为它要求最佳实践)