如何在两个 php 页面之间发送 MD5 值
How to send MD5 value between two php pages
我无法将变量值从页面 request.php 传递到页面 response.php,该变量包含存储在 mysql 数据库字段中的 MD5 加密值以删除记录.
Request.php 页数:
- 通过查询我提取了存储在MD5中的值:cod_idcrypt.
- 字段cod_idcrypt的值被恢复并设置在link:
<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) 如果在 db 上使用加密值进行删除功能正确
b) 如果用主键代替id encrypted
就不会出现上述问题
我会使用加密值来避免显示真实的 url ID。
我该如何解决?
谢谢
您的 MD5 字符串将是字符串而不是整数,因此您必须在查询中引用 $cod_idcrypt
变量。
$sql="DELETE FROM tbl_product WHERE cod_idcrypt='$cod_idcrypt'";
$result=mysql_query($sql) or die(mysql_error());
- 旁注:记住并注意上面的查询将删除 ALL 具有相同值的键。如果只想删除与某个 ID 相关的键,则向其添加一个附加子句。即:例如
AND id=5
。
MD5(123) 将生成以下字符串(而不是整数)。
- 202cb962ac59075b964b07152d234b70
您可能认为您列中的 123
整数(如果此处是这种情况)也会在您的查询中出现或被视为整数,但事实并非如此。它正在接受 MD5,然后被呈现为字符串。
- 旁注:保存 MD5 字符串的列应该是 VARCHAR 并且足够长以存储它的全长。 VARCHAR(40) 是一个安全的选择。
检查查询中的错误会指示语法错误。
如评论中所述,您的代码可用于 SQL 注入并使用已弃用的 MySQL 库。
Use mysqli
with prepared statements, or PDO with prepared statements、它们更安全。
将 error reporting 添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
- 关注您问题下留下的评论。
我无法将变量值从页面 request.php 传递到页面 response.php,该变量包含存储在 mysql 数据库字段中的 MD5 加密值以删除记录.
Request.php 页数:
- 通过查询我提取了存储在MD5中的值:cod_idcrypt.
- 字段cod_idcrypt的值被恢复并设置在link:
<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) 如果在 db 上使用加密值进行删除功能正确 b) 如果用主键代替id encrypted
就不会出现上述问题我会使用加密值来避免显示真实的 url ID。
我该如何解决?
谢谢
您的 MD5 字符串将是字符串而不是整数,因此您必须在查询中引用 $cod_idcrypt
变量。
$sql="DELETE FROM tbl_product WHERE cod_idcrypt='$cod_idcrypt'";
$result=mysql_query($sql) or die(mysql_error());
- 旁注:记住并注意上面的查询将删除 ALL 具有相同值的键。如果只想删除与某个 ID 相关的键,则向其添加一个附加子句。即:例如
AND id=5
。
MD5(123) 将生成以下字符串(而不是整数)。
- 202cb962ac59075b964b07152d234b70
您可能认为您列中的 123
整数(如果此处是这种情况)也会在您的查询中出现或被视为整数,但事实并非如此。它正在接受 MD5,然后被呈现为字符串。
- 旁注:保存 MD5 字符串的列应该是 VARCHAR 并且足够长以存储它的全长。 VARCHAR(40) 是一个安全的选择。
检查查询中的错误会指示语法错误。
如评论中所述,您的代码可用于 SQL 注入并使用已弃用的 MySQL 库。
Use mysqli
with prepared statements, or PDO with prepared statements、它们更安全。
将 error reporting 添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
- 关注您问题下留下的评论。