首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两个php页面之间发送MD5值

如何在两个php页面之间发送MD5值
EN

Stack Overflow用户
提问于 2015-08-08 11:57:29
回答 1查看 650关注 0票数 1

我无法将变量的值从页面request.php传递到页response.php,该页response.php包含存储在mysql数据库中用于删除记录的字段中的MD5加密值。

Request.php页面:

  1. 通过查询,我提取存储在MD5: cod_idcrypt中的值。
  2. 字段cod_idcrypt的值被恢复并在链接中设置:

<a href="response.php?crypt=<?php echo $cod_idcrypt; ?>" onclick="return confirm('Vuoi eliminare il valore?');">Cancella record</a>

Response.php页面:

代码语言:javascript
复制
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编写的值。

代码语言:javascript
复制
select md5(123) as cod_id, '202cb962ac59075b964b07152d234b70' from dual;

我所做的检查:( a)如果使用加密值b在db上正确地执行删除功能,则如果使用主密钥而不是加密的id,则不会出现上述问题。

我会使用加密的值来避免显示url id real。

我怎么才能修好?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-08 14:23:31

您的MD5字符串将是一个字符串,而不是一个整数,因此您必须在查询中引用该$cod_idcrypt变量。

代码语言:javascript
复制
$sql="DELETE FROM tbl_product WHERE cod_idcrypt='$cod_idcrypt'";
$result=mysql_query($sql) or die(mysql_error());
  • Sidenote:记住并注意,上面的查询将删除具有相同值的所有键。如果只想删除与某个ID相关的键,则向其添加一个附加子句。例如:AND id=5

MD5(123)将生成以下字符串(而不是整数)。

  • 202cb962ac59075b964b07152d234b70

您可能认为列中的123整数(如果这里是这样的话)也会是查询中的整数,或者被视为整数,但事实并非如此。它是MD5'd,然后被呈现为一个字符串。

  • Sidenote:包含MD5字符串的列应该是VARCHAR,并且足够长来存储它的全部长度。VARCHAR(40)是一个安全的赌注。

在查询中检查错误后,就会发出语法错误的信号。

  • http://php.net/manual/en/function.mysql-error.php

正如注释中所述,您的代码对SQL开放,并使用不推荐的MySQL库。

with prepared statements,或者PDO with prepared statements,他们要安全得多。

error reporting添加到文件的顶部,这将有助于查找错误。

代码语言:javascript
复制
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

Sidenote:显示错误只应在暂存过程中进行,而不应在生产中执行。

  • 注意你问题下留下的评论。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31892870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档