试图获取非对象的属性

时间:2015-05-18 05:50:33

标签: php stripe-payments

我之前遇到过这个问题,但我修好了,实际上很简单。我不记得我做了什么来解决它..:/它没有在我的页面底部显示我的溢价,我的购买通过,它只是不更新​​,因为它说,'试图得到一个属性我页面顶部的“非对象”。编辑:它也没有在数据库中更新,但是当我手动更新时,它仍然没有显示我在网页上的溢价。

问题出在哪里,index.php

    <?php if($users->premium): ?>
    <p id="prem" style="position: fixed; bottom: 0; width:100%; text-align: center">You are <span style="color:#FB0307">PREMIUM</span>!</p>
    <?php else: ?>
    <p id="prem" style="position: fixed; bottom: 0; width:100%; text-align: center">You are not premium. <a href="checkout.php"><span style="color:#FB0307">Go premium!</span></a></p>
    <?php endif; ?>

要解决这个问题,这是我非常确定我最后一次编辑的代码。 “这实际上是一件非常小的事情”哈哈

    $_SESSION['user_id'] = '';

$stripe = array(
    "secret_key" => "sk_test_hzpYzgCFLBf3sTFtqzYX8Qqy",
    "publishable_key" => "pk_test_AdvDAYfsO9vdYBXJiPaucNHw"
    ); // Test keys

    \Stripe\Stripe::setApiKey($stripe['secret_key']);

    $db = new PDO('mysql:host=127.0.0.1;dbname=blog', 'root', '');

$userQuery = $db->prepare("SELECT id, username, email, premium FROM users WHERE username = :username");

    $userQuery->execute(array(':username' => $_SESSION['user_id']));

    $users = $userQuery->fetchObject();

我非常怀疑这与它有什么关系,但这会在第二个代码块的页面顶部创建$_SESSION。这个if($login)语句不止这个,但这是与此有关的唯一声明。

if($login){
            $_SESSION["user_id"] = Input::get('username');
             Redirect::to('index.php');
            }else{
                 echo '<p style="color: white;">Sorry, login failed.</p>';
        }

1 个答案:

答案 0 :(得分:1)

您的问题是由于您的$users变量不是对象。这意味着您的查询失败。

由于$_SESSION['user_id'],这会让我相信它。

我们无法通过您提供的代码说明,但您始终需要在每个要使用会话的页面上启动会话:

session_start();

此外,在运行查询之前,您将用户会话ID设置为空...

$_SESSION['user_id'] = '';

这会保证您的查询无用,因为现在user_id为空。