2

Web ページにセキュリティを追加しようとしています。

私のウェブページ「page.html」には、多くの JavaScript スクリプトと HTML コードが含まれています。拡張子をphpに変更できます。私はそれで問題ありません。

session_start の仕組みを理解するために、インターネットで見つけたサンプル コードを使用しています。html 拡張子があれば問題なく動作しますが、ユーザーとパスを追加しなくても Web ページにアクセスできます。PHP拡張機能を使用すると、Webページからログインプロンプトが再び表示されます。php 拡張機能を使用すると、ブラウザで書いたときに Web ページにアクセスできません。

これは、アクセスをチェックするための私のコードです: 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 の Web ページに次の行を追加しました。

<?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");
}
?>

login.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

Q: どこ$_SESSION["autenticado"]で設定されていますか?

Q: あそこもやりましたsession_start()か?両方のページで start_session() を呼び出す必要があります。

echoQ:の値を調べるとどうなります`$_SESSION["autenticado"]か? $_SESSION[] 配列全体の var_dump() を実行して、そこに何かあるかどうかを確認してみませんか?

Q: ブラウザで Cookie を有効にしましたか?

PHPセッションに関する優れたチュートリアルは次のとおりです。

$_SESSION[] スーパーグローバルのドキュメントは次のとおりです (おそらくコードで使用する必要がある "isset($_SESSION)" 関数に注意してください):

はい、php.ini にセッション設定があります。しかし、率直に言って、私は最後の手段として、そしてあなたが何をしているのかを正確に理解していない限り、それらをいじることはしません. ドキュメントは次のとおりです。

于 2012-05-05T16:49:51.653 に答える