美好的一天! 我正在尝试创建一个只能在首页输入密码才能访问它的网站(www.mywebsite.com/index.php)
输入密码后,它将从我的public_html外部获取文件home.html。
然后在该页面(home.html)中将使用变量z(www.mywebsite.com/index.php?z=one)链接,该变量将返回1.html或其他页面。
这是我到目前为止所尝试的内容,但即使我使用www.mywebsite.com/index.php?z=one 它仍然打开home.html 我可以得到一些帮助吗?和/或是我正在尝试的可能吗?
<?php
$pass = $_POST['pass'];
if ($pass == "1234") {
$page = $_GET['z'];
if ($page == "one") {
include("../1.html");
} else {
include("../home.html");
}
} else {
if (isset($_POST)) {
?>
<!DOCTYPE html>
<html lang="en">
<form role="form" method="POST" style="margin: 0px" action="index.php">
<input type="password" name ="pass" class="form-control" id="pwd"> </input>
<input type="submit" class="btn btn-danger" value="Enter"></input>
</form>
</html>
<?php
}
}
?>
答案 0 :(得分:5)
这不是解决这个问题的方法。
首先使用会话,但只在会话中保留isLoggedIn
标志而不是密码。
其次,所有脚本都可以在public_html
文件夹中,但您要做的是添加一个小脚本,将所有脚本的loggedIn状态检查,如果没有,则抛出登录页面
这是一个简单的例子
login_check.php
<?php
session_start();
if ( ! isset($_SESSION['loggedIn'] || $_SESSION['loggedIn'] == 0) {
header('Location: login.php');
exit;
}
现在在您的登录脚本中
的login.php
<?php
session_start();
if ( isset($_SESSION['loggedIn'] && $_SESSION['loggedIn'] == 1) {
// already logged in
header('Location: index.php.php'); // or some other page
exit;
}
If ( "The password is correct" ) { // this is of course pseudo code
$_SESSION['loggedIn'] = 1;
header('Location: somepage.php');
exit;
} else {
unset($_SESSION['loggedIn']);
header('Location: login.php');
exit;
}
?>
现在在所有其他脚本
<?php
// first thing is always to check if this user is logged in
// so any access from a user not yet logged in just get
// thrown to the login page, or maybe your index.php
require_once 'login_check.php';
您还可以使用此会话来保存有用但不敏感的内容,例如
$_SESSION['user_id']; // id of the users info in user table
$_SESSION['FirstName'];
$_SESSION['LastName'];
$_SESSION['nickname'];
以及在您的应用程序中可能有用的任何其他任何有用的信息,您不希望每次都要收集数据库。
您的HTML格式不正确
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page Title</title>
</head>
<body>
<form role="form" method="POST" style="margin: 0px" action="index.php">
<input type="password" name ="pass" class="form-control" id="pwd" />
<input type="submit" name="login" class="btn btn-danger" value="Login" />
</form>
</body>
</html>
答案 1 :(得分:1)
你可以在$ _SESSION ['pass']这样的会话中存储get / post传递 但你最好用sha1加密它,最不喜欢
$_SESSION['pass'] = sha1($pass);
并将其取回
if($_SESSION['pass'] == sha1("1234")){}
答案 2 :(得分:1)
您应该使用session。
但将密码存储在会话中并不是一个好习惯。
<?php
session_start();
if(isset($_POST['pass'])){
$_SESSION['p'] = md5($_POST['pass']);
//$pass = $_POST['pass'];
if($_SESSION['p'] == md5("1234"))
{
$page = $_GET['z'];
if($page == "one")
{
include("../1.html");
}
else
{
include("../home.html");
}
}
}
?>
答案 3 :(得分:1)
我相信这会对你有帮助。
<?php
session_start();
if (!empty($_POST['pass']) && $_POST['pass'] == "1234") {
$_SESSION['pass'] = $_POST['pass'];
}
if (empty($_SESSION['pass'])) {
?>
<!DOCTYPE html>
<html lang="en">
<form role="form" method="POST" style="margin: 0px" action="index.php">
<input type="password" name ="pass" class="form-control" id="pwd"> </input>
<input type="submit" class="btn btn-danger" value="Enter"></input>
</form>
</html>
<?php
die;
}
$page = $_GET['z'];
if ($page == "one") {
include("../1.html");
} else {
include("../home.html");
}
?>