【发布时间】:2018-05-15 08:03:18
【问题描述】:
我继承了一些脚本,它们按预期工作,但它们都发送某些错误报告。我在 PHP 方面并不强,所以我在这里寻找一些智慧。
这里是脚本示例。
它监听用户活动,并通过 UserID 在 DB 中设置时间戳,告诉我们用户处于活动状态。
<?php
header('Access-Control-Allow-Origin: *');
$db = "xxx";//Your database name
$dbu = "xxx";//Your database username
$dbp = "xxx";//Your database users' password
$host = "xxx";//MySQL server - usually localhost
$link = mysqli_connect($host,$dbu,$dbp,$db);
if (!$link) {
die(file_put_contents('error.dat', "activity connect db link fail: \n". mysqli_connect_error()));
}
//mysqli_set_charset($link, "utf8")
if (!mysqli_set_charset($link, "utf8")) {
//printf("Error loading character set utf8: %s\n", mysqli_error($link));
exit();
//} else {
//printf("Current character set: %s\n", mysqli_character_set_name($link));
}
if(isset($_POST['uid'])){
//Lightly sanitize the GET's to prevent SQL injections and possible XSS attacks
$uid = strip_tags(mysqli_real_escape_string($link, $_POST['uid']));
$sql = mysqli_query($link, "UPDATE ACTIVITY SET time=NOW() WHERE uid='$uid' ");
if($sql){
die(file_put_contents('error activity.dat', "activity $sql insert failed: \n". mysqli_connect_error()));
}
//}else{
//echo 'some error...';
}
mysqli_close($link);//Close off the MySQL connection to save resources.
?>
检查过... 脚本生成正确的数据库条目,但它也会创建错误 activity.dat 带有消息: 活动 1 插入失败:
现在的问题是...这是良性的吗?我只是评论说它不会创建更多错误文件或脚本需要修复吗?
谢谢!
【问题讨论】:
-
您对 SQL 注入持开放态度 - 您应该研究如何解决 :)
-
if($sql)似乎是荒谬的 - 这基本上表明如果查询 成功 然后将错误写入日志。那应该是if(!$sql) -
mysqli_query 返回 true 或 false 进行更新,当查询成功时, $sql = true , true = 1,你的 if($sql) 是 if($sql == 1//真的)
-
谢谢 CD001 和 FatFreddy,现在我意识到了问题。