2

我正在尝试为我的网页添加一些安全性。

我的网页“page.html”有很多 javascript 脚本和 html 代码。我可以将扩展名更改为 php。对于那件事我没有任何疑问。

我正在使用我在互联网上找到的示例代码来了解 session_start 的工作原理。如果我有 html 扩展名,它可以正常工作,但即使我不添加用户并通过,我也可以访问网页。如果我使用 php 扩展程序,网页会再次将我抛出到登录提示。使用 php 扩展程序,当我在浏览器上编写网页时,我无法访问该网页。

这是我检查访问的代码:checkAccess.php

<?php
session_start();
//check the autenticated value
if ($_SESSION["autenticado"] != "si") {
//if doesn't exits, goes to login webpage
header("Location: login.php");
exit();
}
?>

我在 html 和 php 网页上添加了这一行:

<?php include "checkAccess.php";?>

我知道它有效,因为我可以访问我的 html 页面。但是当我将扩展名更改为 php 时,它不起作用。

我是否必须在 php.ini 或类似的东西中配置任何值?

我添加我的其他 php 文件来检查会话:

autenticacion.php:

<?
session_start();
if ($_POST["usuario"]=="user" && $_POST["contrasena"]=="123456"){
$_SESSION["autenticado"]= "SI";
header ("Location: mypage.php");
}else {
header("Location: login.php?errorusuario=si");
}
?>

登录.php:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<title>Autenticación PHP</title>
</head>
<body>
<h1>Formulario de autenticaci&oacuten</h1>
<?php if(isset($_GET['errorusuario'])){if ($_GET['errorusuario']=="si"){?>
<font color="red"><b>Datos incorrectos</b></font>
<?php }}else{?>
Introduce tu nombre de usuario y contrase&ntildea
<?}?>
<form action="autenticacion.php" method="POST">
<table border="0">
<tr><td>Nombre de usuario:</td><td><input name="usuario" size="25" value=""/></td></tr>
<tr><td>Contrase&ntildea:</td><td><input name="contrasena" size="25" type="password"/>      </td></tr>
<tr><td/><td><input type="submit" value="Inicio de sesión"/></td></tr>
</table>
</form>
Para ingresar, d&eacutebes ingresar <b>pablo</b> en el 1er campo y <b>123456</b> en el    2do.
</body>
</html>

我正在使用 xampp 来测试页面。

4

1 回答 1

-2

问:在哪里$_SESSION["autenticado"]设置?

问:你在session_start()那里也做过吗?您必须在两个页面中调用 start_session() 。

问:如果你认为你echo的价值是`$_SESSION["autenticado"]什么?为什么不对整个 $_SESSION[] 数组做一个 var_dump() ,看看那里有没有什么

问:您是否在浏览器中启用了 cookie?

这是一个关于 PHP 会话的好教程:

这是 $_SESSION[] 超全局的文档(注意您可能应该在代码中使用的“isset($_SESSION)”函数):

是的,php.ini 中有会话设置。但坦率地说,除非万不得已,而且除非你确切地知道自己在做什么,否则我不会惹他们中的任何一个。这是文档:

于 2012-05-05T16:49:51.653 回答