0

別のページにアクセスするためにログインする必要があるサイトを作成しましたが、特別なことは何もありません. ユーザーがログインしたままにするために、すべてのページの上にセッションを設定しています。

私の問題は、各ページで異なるセッション変数を設定する必要がないことです。それらを設定するために呼び出すことができる1つの関数が必要です。さらに、各ページにこれらすべての変数が必要なわけではないので、関数がオプションのパラメーター (電子メールや、すべてのページで使用されないプロフィール写真など) を受け入れるようにしたいと考えています。

各ページの上でこれを呼び出します。

<?php 

require_once 'session.php';
confirm_logged_in();
$username = $_SESSION['username'];
$email = $_SESSION['email'];
$picture = $_SESSION['picture'];
$group = $_SESSION['group'];

?>

このようにして、必要な変数のみを設定できるようにしたいと思います。

<?php 

require_once 'session.php';
confirm_logged_in();
set_variables($username, $email);

?>

「session.php」ファイルは次のようになります。

<?php 
session_start();
function logged_in(){
    return isset($_SESSION['username']);
}
function confirm_logged_in(){
    if(!logged_in()){
        header('location: start.php');
    }
}
?>

いくつか試してみましたが、膨大な量のエラーが発生しました。誰かがすでにこれを行っているか、これを行うスクリプトを見つけましたか? それは可能ですか?

4

5 に答える 5

0

まず第一に、やりたいことが関数のオーバーロードである場合、それはできません。詳細については、これを参照してください。ただし、これを行うことができます:

<?php

set_variables($username, $email, $picture,$group)
{
$_SESSION['username'] = $username;
$_SESSION['email'] = $email;
$_SESSION['picture'] = $picture;
$_SESSION['group'] = $group;
}
?>

この関数を session.php ファイルに入れます。

于 2012-10-27T14:49:18.673 に答える
0

正しく理解できたかどうかはわかりませんが、理解できた場合は、「Session_Variables.php」という新しいファイルを作成するだけです。

ファイルを作成したら、次のコードを貼り付けます。

<?php
require_once 'session.php';
confirm_logged_in();
$username = $_SESSION['username'];
$email = $_SESSION['email'];
$picture = $_SESSION['picture'];
$group = $_SESSION['group'];
?>

最後に、古いコードを次のように置き換えます。

include("Session_Variables.php");
于 2012-10-27T14:49:31.560 に答える
0

質問とは直接関係ありませんがexit;リダイレクト ヘッダーの後に追加する必要があります。ログインしていなくても、クライアントはヘッダーを無視してページを読み込むことができます。

于 2012-10-27T14:52:12.703 に答える
0

あなたが望んでいたと思うような仕事をしたいのならset_variables($username, $email)、このようなものを書く必要があります.

セッション.php

<?php 
session_start();
function logged_in(){
    return isset($_SESSION['username']);
}
    function confirm_logged_in(){
    if(!logged_in()){
        header('location: start.php');
    }
}
//Only Picture and group are Optionals
function set_variables($username, $email, $picture = '', $group = ''){
    //you can check here is thoses variables are set or valid before assign them
    $_SESSION['username'] = $username;
    $_SESSION['email'] = $email;
    $_SESSION['picture'] = $picture;
    $_SESSION['group'] = $group;
}
//create a function that we need to retrieve thoses values
function get_variable($name){
    if ( isset( $_SESSION[$name] ) ) return $_SESSION[$name];
    return FALSE; //if the variable is not set.
}
?>

そして、あなたはそれをこのように使うことができます

<?php 
require_once 'session.php';
confirm_logged_in();
set_variables($username, $email);
$username = get_variable('username');
?>
于 2012-10-27T14:53:11.980 に答える
0

session_start(); を移動する必要があると思います。実際のページへ。session_start() での require_once の使用; は良い計画ではありません。

于 2017-06-12T03:35:00.273 に答える