gpt4 book ai didi

php - php中页面功能的安全性

转载 作者:行者123 更新时间:2023-12-02 01:06:59 25 4
gpt4 key购买 nike

所以这里我有一个包含所有功能的页面。我命名为“init-admin”,并在所有管理页面上调用所有这些函数

这是init-admin.php的内容

 <?php

session_start();
require_once "admin-functions/db.php";
require_once "admin-functions/admin.php";
require_once "admin-functions/navigation1-content.php";

require_once "admin-functions/navigation1-press.php";
require_once "admin-functions/navigation1-restrospective.php";
require_once "admin-functions/navigation1-inquiries.php";

require_once "admin-functions/navigation2-earrings.php";
require_once "admin-functions/navigation2-necklaces.php";
require_once "admin-functions/navigation2-bracelets.php";

require_once "admin-functions/navigation2-sets.php";
require_once "admin-functions/navigation2-men-jewelrys.php";
require_once "admin-functions/navigation2-object_arts.php";

require_once "admin-functions/navigation2-rings.php";
require_once "admin-functions/navigation2-pin_pendant.php";
?>

这是我作为示例调用的函数之一。它的函数名是“admin.php”这是他的内容

//1. REGISTER
function Register($username, $email, $password){
global $connect;


$username = mysqli_real_escape_string($connect, $username);
$email = mysqli_real_escape_string($connect, $email);
$password = mysqli_real_escape_string($connect, $password);

$password = password_hash($password, PASSWORD_DEFAULT);


$query = "INSERT INTO admin (admin_username, email, password, actor) VALUES ('$username', '$email', '$password', '1')";

if( mysqli_query($connect, $query) ){

return true;
}else{
return false;
}
}


function prevent_twin_names($username){
global $connect;

$username = mysqli_real_escape_string($connect, $username);

$query = "SELECT * FROM admin WHERE admin_username ='$username'";

if( $result = mysqli_query($connect, $query) ){
if(mysqli_num_rows($result) == 0) return true;
else return false;
}
}

如果我像这样开会,我的问题就在这里

require_once "core-admin/init-admin.php";
if( !isset($_SESSION['admin_username']) ){

$_SESSION['msg'] = 'page can not open';
header('Location:admin_login.php'); exit();
}

在功能页面上我得到一个错误“to many redirect”。

所以我想在这里问一下如果没有给定session的功能页会不会有危险?

但是如果我尝试在只出现空白页面的浏览器页面中调用页面函数。

谁能解释一下?型

最佳答案

好吧,看来你这里有各种各样的问题,我会尽量一次回答一个问题。

标题()

在 PHP 中,我们有 header 函数;我们可以用于各种目的,更改页面的位置:

header('Location: index.php');

或者设置页面显示的内容类型:

header('Content-Type: text/plain');

这在处理代码的某些部分时很有用。 header location 可能是最常用的功能,但是使用它时必须小心。它通常会给您带来麻烦。

您收到的错误来自一次尝试将用户重定向太多次。我相信,对于每个浏览器来说都是不同的。

要修复该错误,您必须寻找设置header 的其他位置,并确保每页只设置一个header。另请注意:

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

函数

那么首先让我们来处理您的函数问题。当您在浏览器中加载函数页面时它是空白的,这是因为它位于 function 内部。这意味着您眼前的代码块只会在启动时运行。因此,一个空白页。

在实践中,这看起来像:

function foo()
{
return 'Hello Foo!';
}

要从该函数中获取输出,我必须在我的代码中的某处启动它,要么在它自己的文件中(不是一个好的做法),要么在代码中我需要它的地方。您可以通过以下方式启动它

echo foo();

或将其分配给一个变量:

$foo = foo();

函数的目的是让您不必一遍又一遍地编写相同的代码。您根据一般准则编写一段代码,每次需要执行代码时,您都可以调用该函数。

session

既然我们已经讨论了函数,请不要在您的函数中添加session。您希望功能尽可能可重用,请在页面顶部添加一个 session

<?php
session_start();
// some code ...

if(isset($_POST['submit'])
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];

if( Register($username, $email, $password) === true )
{
echo 'Registration Complete';
}
else
{
echo 'Registration failed';
}
}
?>
<html>
<head>

</head>
<body>
<form id="registration">

</form>
</body>
</html>

现在注册后,就可以调用函数了。这比用你的函数开始你的 session 更好。

这就是为什么,您的注册功能将在编写了一些代码之后出现; session 必须从顶部开始。否则将无法正常运行。要解决这个问题,您可以创建一个为您创建 session 的函数:

function start_my_session()
{
session_start();
}

这个非常简单,但是您可以使用不同的 session 函数来增强安全性。有关 session 安全的更多信息 look at PHP's Manual .

关于php - php中页面功能的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47110745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com