相关疑难解决方法(0)

如何在PHP中阻止SQL注入?

如果插入用户输入而不修改SQL查询,则应用程序容易受到SQL注入的攻击,如下例所示:

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
Run Code Online (Sandbox Code Playgroud)

这是因为用户可以输入类似的内容value'); DROP TABLE table;--,查询变为:

INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
Run Code Online (Sandbox Code Playgroud)

可以采取哪些措施来防止这种情况发生?

php mysql sql security sql-injection

2776
推荐指数
28
解决办法
166万
查看次数

围绕mysql_real_escape_string()的SQL注入

即使使用mysql_real_escape_string()函数,是否存在SQL注入的可能性?

考虑这个示例情况.SQL是用PHP构造的,如下所示:

$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));

$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
Run Code Online (Sandbox Code Playgroud)

我听过很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()函数也可以破解.但我想不出任何可能的漏洞?

像这样的经典注射:

aaa' OR 1=1 --
Run Code Online (Sandbox Code Playgroud)

不工作.

你知道任何可能通过上面的PHP代码注入的注入吗?

php mysql sql security sql-injection

596
推荐指数
4
解决办法
22万
查看次数

如何在不同的环境中获取MySQLi错误信息

在我的本地/开发环境中,MySQLi查询执行正常.但是,当我在我的Web主机环境中上传它时,我收到此错误:

致命错误:在...中的非对象上调用成员函数bind_param()

这是代码:

global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);
Run Code Online (Sandbox Code Playgroud)

为了检查我的查询,我试图通过控制面板phpMyAdmin执行查询,结果是OK.

php environment mysqli error-reporting prepared-statement

85
推荐指数
1
解决办法
1万
查看次数

如何将我的站点从mysql迁移到mysqli?

我在数据库端有什么需要做的,还是只是改变的php?我可以用mysqli函数代替mysql函数吗?还有什么我应该知道的吗?

php mysqli

32
推荐指数
2
解决办法
4万
查看次数

mysqli或死,它必须死?

如果我使用这样的代码:

$update_result = mysqli_query( $link , $sql_update_login ) or die ('Unable to execute query. '. mysqli_error($link));
Run Code Online (Sandbox Code Playgroud)

它是否必须死亡或者您之后可以提出不同的查询?就像将错误日志写入另一个表的预定函数一样?如:

$update_result = mysqli_query( $link , $sql_update_login ) or function('$query, $error);
Run Code Online (Sandbox Code Playgroud)

'或'之后的其他选项有哪些?我没有在文档中找到它,任何线索都表示赞赏.

php mysql mysqli

19
推荐指数
2
解决办法
4万
查看次数

从MYSQL更新到MYSQLI

因此,当MYSQL被弃用并且eveyone不断告诉我更新时,我认为这是我的时间.

但是因为我不习惯mysqli_*,这对我来说似乎很陌生.当我在Mysql中编写整个站点时,这不是一个简单的编辑.

所以我想知道:我如何将下面的代码转换成Mysqli?在处理查询数据库时,只是给我和其他任何人一个很好的起点.

$sql_follows="SELECT * FROM friends WHERE user1_id=".$_SESSION['id']." AND status=2 OR user2_id=".$_SESSION['id']." AND status=2";
$query_follows=mysql_query($sql_follows) or die("Error finding friendships");
if($query_follows>0){
}
Run Code Online (Sandbox Code Playgroud)

编辑:在阅读和编辑我的整个网站时,上面的代码转换为MYSQLI_将会是这样的..

 $Your_SQL_query_variable= mysqli_query($connectionvariable,"SELECT * FROM friends WHERE user1_id=".$_SESSION['id']." AND status=2 OR user2_id=".$_SESSION['id']." AND status=2")) {
        printf("Error: %s\n", $mysqli->error);
    }
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli

12
推荐指数
1
解决办法
3万
查看次数

将大型网站从MySQL切换到MySQLi

我想从MySQL切换到MySQLi,但我有一个非常大的网站.

我读到https://wikis.oracle.com/display/mysql/Converting+to+MySQLi可以帮助我和我阅读如何将这个mysql更改为mysqli?.它说我可以用函数添加'i'替换大部分函数,​​并且我应该开始bughunting.

但是我的网站非常复杂和庞大,需要很长时间才能检查一切是否正常.那么:对于一个非常大的网站,从MySQL切换到MySQLi的最佳方法是什么?

谢谢!

php mysql migration mysqli switching

5
推荐指数
1
解决办法
6175
查看次数

Wierd和Annoying错误:调用未定义的函数mysql_query()

我已经在这一个超过一个小时了,我可以连接到我的数据库和所有(没有给出任何错误)但是当我尝试使用"mysql_query($ query);"时我收到以下错误

Call to undefined function mysql_query()
Run Code Online (Sandbox Code Playgroud)

我已经尝试过启用:

extension=php_mysql.dll
extension=php_mysqli.dll
Run Code Online (Sandbox Code Playgroud)

而且我补充说:

extension_dir = "ext"
extension=php_mysql.dll
Run Code Online (Sandbox Code Playgroud)

在导入列表的末尾.

在我所做的每一次更改之间,我重新启动了exampp中的所有进程,并且在我单独尝试它的每个解决方案之后仍然会出现这个恼人的错误.

我试过在网上看,但唯一类似于我的错误是:

Call to undefined function mysql_connect()
Run Code Online (Sandbox Code Playgroud)

在任何一点上我都没有任何问题,从未见过它.

我在这里问它是因为我在谷歌搜索结果上发了垃圾邮件,上面的问题; 不是我拥有的那个.

如果有人可以帮助我,我会很高兴,我在网上找到的教程显示了我写的完全相同的代码.

phpInfo:顶部 phpInfo:sql

php mysql undefined mysql-connect

5
推荐指数
1
解决办法
4226
查看次数

从mysql转换为mysqli(mysql_fetch_array)

我有一些这样的php代码:

$row = mysql_fetch_array ( mysql_query("SELECT * FROM `tblFacilityHrs` WHERE `uid` = '$uid'")); 
Run Code Online (Sandbox Code Playgroud)

我现在正尝试将其转换mysqli_fetch_array为此处所示的http://php.net/manual/en/mysqli-result.fetch-array.php(示例1面向对象样式)

我不确定“ $ result”示例的含义。

到目前为止,这是我将代码转换为的内容:

<?php 
include('../config.php'); 
if (isset($_GET['uid']) ) { 
$uid = $_GET['uid'];
$id = $_GET['id'];  
if (isset($_POST['submitted'])) { 
foreach($_POST AS $key => $value) { $_POST[$key] = mysqli_real_escape_string($value); } 

//Query for tblFacilityHrs
$sql = " UPDATE tblFacilityHrs SET `title`='{$_POST['title']}',`description`='{$_POST['description']}' WHERE `uid` = '$uid' "; 
$result = $mysqli->query($sql) or die($mysqli->error);

//Query for tblFacilityHrsDateTimes
$sql2 = "UPDATE tblFacilityHrsDateTimes SET `startEventDate`='{$_POST['startEventDate']}',`endEventDate`='{$_POST['endEventDate']}', `startTime`='{$_POST['startTime']}',`endTime`='{$_POST['endTime']}',`days`='{$_POST['days']}',`recurrence`='{$_POST['recurrence']},`finalDate`='{$_POST['finalDate']}' WHERE `id` = …
Run Code Online (Sandbox Code Playgroud)

php mysql oop mysqli

3
推荐指数
1
解决办法
3万
查看次数

如何使用 PHP 统计 MySQL 连接数

我正在使用以下 php 代码来检查 MySQL 连接数

$connection=mysql_connect("localhost","$mysql_user","$mysql_pwd");
if (mysqli_connect_errno())
  { echo "NO CONNECTION"; }
  else
  {
unset ($result);
$result = mysql_list_processes($connection);
while ($row = mysql_fetch_assoc($result)){
$mysql_data[]=$row["db"];
}
mysql_free_result($result);
$n_connections=count($mysql_data)-1;
}
echo "$n_connections";
Run Code Online (Sandbox Code Playgroud)

由于 mysql_connect 在 PHP 5.5.0 中已被弃用,因此我将 $connection 更改为

$connection=mysqli_connect("localhost","$mysql_user","$mysql_pwd", "$mysql_db");
Run Code Online (Sandbox Code Playgroud)

进行此更改后,$n_connections 不再返回正确的值,代码中有什么问题?

谢谢

注意:php.net 中的 mysqli_list_processes 函数没有帮助,我尝试了它,但它不起作用。

注2:这篇文章不是“如何将mysql更改为mysqli?”的重复。,我的问题是替换“$result = mysql_list_processes($connection);”

php mysql mysqli

2
推荐指数
1
解决办法
2762
查看次数