-1

Facebook ログイン API を使用してログイン ページを作成しました。そして、ログイン時にユーザーデータ(名前、性別など)をMySQLデータベース(テーブルの列「gorg」を除く)に保存しました。

次に、ユーザーを「Giver」と「Gatherer」の 2 つのリンクがある「newgg.php」にリダイレクトします。したがって、ユーザーはそれらのいずれかを選択できます。

私のサンプルコード:

<?php

session_start();
error_reporting(E_ALL);

include('src/sql_handler.php');
include('src/facebook_handler_core.php');

$new_fb = new facebook_handler_core;
$new_fb->run();

if (isset($_SESSION['gorg']) == "Gatherer") {
  header('Location: map.php');
}

?>

私の目標は、彼らが押すボタンに応じてリダイレクトすることです。最初にページにアクセスすると、ボタンコードが表示されます

<form method="post" action="<?php echo $PHP_SELF;?>">
      <input type="submit" class="button orange" name="Giver" value="Giver">
</form>

<form method="post" action="<?php echo $PHP_SELF;?>">
      <input type="submit" class="button orange" name="Gatherer" value="Gatherer">
</form>

最後になりましたが、以前にユーザーのタイプを既に選択している場合は、users テーブルの「gorg」列の内容に応じてリダイレクトする必要があります。

コードが正しく機能しない理由について何か考えはありますか?

必要な場合に備えて、ここに sql_handlers があります

<?php

class MySQL_Con {
private $host = 'localhost',
        $user = 'NUNURBSINESS',
        $pass = 'ASKMEANDMAYBE',
        $db = 'teknolog_fruitforest',
        $_CON;

function MySQL_Con() {

    $this->_CON = mysql_connect($this->host, $this->user, $this->pass);
    if(!$this->_CON)
        die(mysql_error());
    else {
        $select_db = mysql_select_db($this->db);

        if(!$select_db)
            die('Error Connecting To Database'.mysql_error());
    }
}

function End_Con() {
    mysql_close($this->_CON);
}
}
?>

そして今、facebook_handler_core.php

<?php

class facebook_handler_core extends MySQL_Con {
public $session,$_INFO = array(),$U_INFO = array();

public function run() {
    require('src/facebook.php');

    $set_fb = new Facebook(array(
                'appId' => 'MYAPPID',
                'secret' => 'CANTTELLYOU',
                'cookie' => true));

    $this->session = $set_fb->getUser();

    if($this->session != 0) {
        $this->_INFO = $set_fb->api('/me');

        if(!empty($this->_INFO))
            $this->fb_session_handler();
    }
}

function fb_session_handler() {
    $SQL_CON = new MySQL_Con;
    $SQL_CON->MySQL_Con();
    $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND email = '" .mysql_real_escape_string($this->_INFO['email'])."'") or die(mysql_error());

    if(mysql_num_rows($query) > 0) {
        $this->U_INFO = mysql_fetch_array($query) or die(mysql_error());
    } else {
        $photolink = 'http://graph.facebook.com/'.$this->session.'/picture?type=square';

        $query = mysql_query("INSERT INTO users(oauth_uid, oauth_provider, username, first_name, last_name, email, pic_square, gorg, gender)VALUES('".mysql_real_escape_string($this->session)."','facebook',    '".mysql_real_escape_string($this->_INFO['name'])."',      '".mysql_real_escape_string($this->_INFO['first_name'])."','".mysql_real_escape_string($this->_INFO['last_name'])."','".mysql_real_escape_string($this->_INFO['email'])."','".mysql_real_escape_string($photolink)."','null','".mysql_real_escape_string($this->_INFO['gender'])."')") or die(mysql_error());

        $query = mysql_query("SELECT * FROM users WHERE email='".mysql_real_escape_string($this->_INFO['email'])."'") or die(mysql_error());

        $this->U_INFO = mysql_fetch_array($query) or die(mysql_error());

    }

    $SQL_CON->End_Con();
    $gorg = $this->U_INFO['gorg'];

    if($gorg != null) {
        $_SESSION['gorg'] = $gorg;
    }

    $_SESSION['email'] = $this->U_INFO['email'];
    $_SESSION['image'] = $this->U_INFO['pic_square'];
    $_SESSION['gender'] = $this->U_INFO['gender'];

    if($gorg != null) {
        if($gorg == 'Giver') {
            //redirect to Giver
            header('Location: picktreetype.php');
        }

        if($gorg == "Gatherer") {
            //redirect to Gatherer
        }
    }

    return true;
}

function update_user($param) {
    $SQL_CON = new MySQL_Con;
    $SQL_CON->MySQL_Con();

    if($param == 'Giver')
        $query = mysql_query("UPDATE users SET gorg='".mysql_real_escape_string($param)."', FF_Points='100' WHERE email='".mysql_real_escape_string($_SESSION['email'])."'") or die(mysql_error());

    if($param == 'Gatherer')
        $query = mysql_query("UPDATE users SET gorg='".mysql_real_escape_string($param)."', FF_Points='30' WHERE email='".mysql_real_escape_string($_SESSION['email'])."'") or die(mysql_error());

    $SQL_CON->End_Con();

    if(!$query)
        return false;
    else
        return true;
}
}
?>

事前に感謝します。助けと適切なガイダンスを得ることになると、このサイトから十分に得ることができません。過去に誰かが私に与えてくれたすべての助けに本当に感謝しています。

4

1 に答える 1

0

問題はあなたがしていることです

isset($_SESSION['gorg']) == "Gatherer"

asisset()はブール値の結果を返します。これは、 を使用して==、明示的に false ではない値に一致します。===(同一性比較演算子)を使用していれば、問題の直接的な証拠が得られたはずです。

したがって、あなたの場合、「Gatherer」は非 FALSE、別名 TRUE として評価されます。

毎回。

この種の比較は使用しないでください。代わりに試してください:

isset($_SESSION['gorg']) && $_SESSION['gorg'] == "Gatherer"

gorg他の評価を行う前に が設定されているかどうかを確認し続けたい場合。

于 2012-08-02T06:48:53.567 に答える