我无法将变量的值从页面request.php传递到页response.php,该页response.php包含存储在mysql数据库中用于删除记录的字段中的MD5加密值。
Request.php页面:
<a href="response.php?crypt=<?php echo $cod_idcrypt; ?>" onclick="return confirm('Vuoi eliminare il valore?');">Cancella record</a>
Response.php页面:
include("connect.php");
$cod_idcrypt =$_REQUEST['crypt'];
$sql="DELETE FROM tbl_product WHERE cod_idcrypt=".$cod_idcrypt;
$result=mysql_query($sql); cod_idcrypt标识的记录是正确写入的,因为我验证了id主键cod_id等于用cod_idcrypt函数MD5编写的值。
select md5(123) as cod_id, '202cb962ac59075b964b07152d234b70' from dual;我所做的检查:( a)如果使用加密值b在db上正确地执行删除功能,则如果使用主密钥而不是加密的id,则不会出现上述问题。
我会使用加密的值来避免显示url id real。
我怎么才能修好?
谢谢
发布于 2015-08-08 14:23:31
您的MD5字符串将是一个字符串,而不是一个整数,因此您必须在查询中引用该$cod_idcrypt变量。
$sql="DELETE FROM tbl_product WHERE cod_idcrypt='$cod_idcrypt'";
$result=mysql_query($sql) or die(mysql_error());AND id=5。MD5(123)将生成以下字符串(而不是整数)。
您可能认为列中的123整数(如果这里是这样的话)也会是查询中的整数,或者被视为整数,但事实并非如此。它是MD5'd,然后被呈现为一个字符串。
在查询中检查错误后,就会发出语法错误的信号。
正如注释中所述,您的代码对SQL开放,并使用不推荐的MySQL库。
with prepared statements,或者PDO with prepared statements,他们要安全得多。
将error reporting添加到文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your codeSidenote:显示错误只应在暂存过程中进行,而不应在生产中执行。
https://stackoverflow.com/questions/31892870
复制相似问题