在PHP中将MySQL信息从一个页面移动到另一个页面

3

我在view.php中有以下代码,我想将信息传递到edit.php,而不会影响安全性或显示变量中包含的内容。 edit.php具有用于编辑数据库中信息的表单。

    while ($row = mysql_fetch_assoc($result))
    {
        echo "<a href=\"edit_employee.php?$row[employee_id_passport]\">" . $row['first_name'] ." " . $row['surname'] . "</a>";

        echo "<br />";
    }
5个回答

3

您已经在安全方面做出了妥协 - 请参阅SQL注入和转义字符串。

此外,通常通过需要(请参见require_once()require()函数)文件来包含应用程序的其他模块。它本身不是安全漏洞,但确实将所有全局变量、函数和类封装到该脚本中。

如果您确实需要这样做,可以取消设置的所有变量(请参见unset()),但仅保留要传递的数据。

学习如何编写干净且安全的代码,它将是安全的。将一个PHP文件包含到另一个文件中并不是不安全的做法。

编辑:

一些开始可能是创建具有私有或受保护属性和公共方法的类,然后使用它们存储敏感信息并执行某些操作。通过使用封装,您可以实现所需的内容。


0

您应该只允许已登录的用户查看或编辑该信息,否则可能会遭受SQL注入攻击:

 $first_name = $_POST['first_name'];
 $sql_query = "SELECT  * FROM employee_master  WHERE first_name = '$first_name'";
 $result = mysql_query($sql_query, $connection);

你应该改为:
 $first_name = mysql_real_escape_string( $_POST['first_name']);
 $sql_query = "SELECT  * FROM employee_master  WHERE first_name = '$first_name'";
 $result = mysql_query($sql_query, $connection);

这根本不是答案。应该将其添加为评论。 - RRStoyanov
具体问题是什么?这是回答“为了安全地完成任务,我应该注意什么?”的答案。 - Tudor Constantin
@RRStoyanov OP想要使其安全,但不了解基础知识 - 显示他/她已经存在的受损安全性是一个相当不错的选择。 - Tadeck
我在争论吗?不是的!我只是说mysql_real_escape_string建议应该作为注释添加。不管了... - RRStoyanov

0

假设您除了使用标准锚点链接传递变量之外无法执行其他操作,那么最好的方法是为表中每个记录的ID生成一个MD5值。这样您就可以执行以下操作:

while($row = mysql_fetch_assoc($res))
{
echo "<a href=\"edit_employee.php?chksum=$row['md5']\">" . $row['first_name'] ." $row['surname'] . "</a>";
}

现在在edit.php中检索它并将其与哈希值进行比较。

一种更安全的方法是将记录的id与其他唯一数据(例如加入日期或出生日期)连接起来并对整个字符串进行哈希处理。这样做会非常安全。


0
$first_name = mysql_real_escape_string( $_POST['first_name']);

session_start();
$_SESSION['loggedin'] = true;
$_SESSION['first_name'] = $first_name;

然后将数据库中的其他值设置为会话变量,例如用户的姓氏:

$_SESSION['surname'] = $row['surname'];

然后你可以从任何其他页面执行

if ($_SESSION['loggedin'] == true) {
    echo "Welcome $_SESSION['first_name'] $_SESSION['surname']!";
}

0

选项1:只需通过链接从数据库中传递id。如果用户知道id,但不知道其他任何信息,那么这对他来说是无用的。使用其他方法只会增加几行代码。

选项2:将用户的id设置在SESSION中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接