-1

助けてください。特定のユーザー名とパスワードをリダイレクトして特定のhtmlフォームにログインするためのセッションIDを使用するphpスクリプトが必要です。ただし、ユーザーはこのユーザー名とパスワードでログインせずにリンクにアクセスできます(つまり、ログイン後にリンクをコピーすることはできません)。別のブラウザで続行します)。管理エリアか何かのようなもの。(注:名前とパスワードはデータベースから取得するのではなく、自分で指定するので、SQLスクリプトは必要ありません)その中で検索しすぎて、何か役立つものが見つかりませんでした。事前に努力に感謝します。

4

2 に答える 2

1

および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

あなたの問題を正しく理解できたことを願っています。どこか間違っていたらヒントをください。:)

于 2012-09-18T10:40:08.063 に答える
0

これをすべてのページの上に置いて、ログインしているかどうかを確認します。

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 を使用して、フォームが実際にページに送信されたかどうかをチェックします。

  • 投稿値をチェックするためのエラーチェックを追加して、それらが空かどうかを確認する必要があります。これは良い習慣です。

  • このプログラムの構造を調べて、それがどのように明確に書かれているかを確認してください。その意図は明らかです。コーディングするときは、常に明快なルートに従ってください。

幸運を

于 2012-09-18T10:06:35.610 に答える