助けてください。特定のユーザー名とパスワードをリダイレクトして特定のhtmlフォームにログインするためのセッションIDを使用するphpスクリプトが必要です。ただし、ユーザーはこのユーザー名とパスワードでログインせずにリンクにアクセスできます(つまり、ログイン後にリンクをコピーすることはできません)。別のブラウザで続行します)。管理エリアか何かのようなもの。(注:名前とパスワードはデータベースから取得するのではなく、自分で指定するので、SQLスクリプトは必要ありません)その中で検索しすぎて、何か役立つものが見つかりませんでした。事前に努力に感謝します。
2 に答える
およびspecial_form.php
/または他の同様のページに次のようなものを置きます。
check_login();
このようなものはどこcheck_login()
にありますか:
function check_login() {
if ($_SESSION['login'] == true AND !empty($_SESSION['user_id')) {
if ($_SESSION['username'] != 'MyUser' OR $_SESSION['password'] != 'MyPass') {
header('Location: http://www.domain.com/login.php');
}
} else {
header('Location: http://www.domain.com/login.php');
}
}
さて、login-process.php
次のようなものを書いてください:
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
if ($_SESSION['username'] == 'MyUser' AND $_SESSION['password'] == 'MyPass') {
header('Location: http://www.domain.com/special_form.php');
}
// normal login process code
あなたの問題を正しく理解できたことを願っています。どこか間違っていたらヒントをください。:)
これをすべてのページの上に置いて、ログインしているかどうかを確認します。
if(!isset($_SESSION['loggedin'] ||
!$_SESSION['loggedin']==1) header('Location: http://website.com/login.php');
login.php の HTML フォーム
<?php
//And just check post variables from form:
if(isset($_POST['submit'])) {
if(strcmp($_POST['username'], 'Your username') == 0 &&
(strcmp($_POST['password'], 'Your password') == 0) {
$_SESSION['loggedin'] = 1;
header('Location: http://website.com/youareloggedin.php');
}
}
?>
<form action="" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" name="submit" />
</form>
いくつかのヒント:
ヘッダー関数を呼び出す前にページに何も書き込まないでください。壊れます。
フォームの空白のアクションはデータをそれ自体に送信し、php が一番上にあることを確認します (通常、すべての php を一番上に保持し、必要に応じてインライン php を使用する方が簡単です。
<?=functionorvariable()?>
strcmp は 2 つの文字列を比較し、等しい場合は戻り値としてゼロを返します。
値をチェックする代わりに、常に isset を使用して、フォームが実際にページに送信されたかどうかをチェックします。
投稿値をチェックするためのエラーチェックを追加して、それらが空かどうかを確認する必要があります。これは良い習慣です。
このプログラムの構造を調べて、それがどのように明確に書かれているかを確認してください。その意図は明らかです。コーディングするときは、常に明快なルートに従ってください。
幸運を