私はウェブサイトを持っており、私のフォームはlogin.htmlという認証ページからアクセスできます。 私の認証ページは機能しますが、www.website.com/index.htmlのようなアドレスバーに自分のウェブサイトの直接URLを書き込むと、認証ページを経由せずに自分のウェブサイトにアクセスできます。 ここで私のコードは 'login.php'と呼ばれ、私のログインとパスワードがある私のpostgresqlデータベースにアクセスします。認証ページを経由せずに私のウェブサイトにアクセスすることができます
<?php
// Parametre de connection
$host = 'localhost';
$database = 'base';
$user = 'postgres';
$pass = 'postgres';
$port = '5432';
$dns = 'pgsql:host='.$host .';port='.$port .';dbname='.$database;
try
{
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['mdp'])) {
extract($_POST);
$bdd = new PDO("pgsql:host=$host;dbname=$database",$user,$pass);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = $bdd->query("SELECT pwd FROM nom_table WHERE login = '".$login."'");
$result = $sql->fetch(PDO::FETCH_ASSOC);
if ($result['pwd'] != $mdp) {
echo '<body onLoad="alert(\'Mauvais mot de passe\')">';
header ('location:login.html');
}
else {
session_start();
$_SESSION['login'] = $login;
echo 'Vous êtes connecté';
header ('location:index.html');
}
}
else {
echo '<body onLoad="alert(\'Les variables du formulaire ne sont pas déclarées\')">';
header ('location:login.html');
}
}
catch(Exception $e)
{
echo "Connection a la BDD impossible : ", $e->getMessage();
die();
}
//header('Location:index.html');
?>
は、その後、私は私のウェブサイトのコードのbegginingでこのコードを追加しました:
<?
session_start();
if(!isset($_SESSION['login'])) {
header('Location: login.html');
}
?>
index.htmlでセッションチェックを実行していますか。もしそうなら、それをPHPページに追加してそれをインクルードするか、index.html - > index.phpを作る必要があります。あなたのログインページでも変数$ loginを設定することはありません。 –
@SteampunkForge、ok、index.htmlをindex.phpに変更しましたが、何も変更しませんでした。ここで私のpostgresテーブルから変数ログインを宣言する方法はありますか?私はそれが私のSQLでそれを照会するだけで動作すると思っていた – Hippipers
私はエコー$ログインを試みたと私のログイン井戸を返します – Hippipers