2015-05-18 2 views
3

Я столкнулся с этой проблемой раньше, но я исправил ее, и это было просто. Я не могу вспомнить, что я сделал, чтобы исправить это.:/Это не показывает мне премиум в нижней части моей страницы, моя покупка проходит, она просто не обновляется, потому что она говорит: «пытается получить свойство non object "в верхней части моей страницы. EDIT: он также не обновляется в базе данных, но когда я обновляю вручную, он по-прежнему не показывает, что я премию на веб-странице.Попытка получить свойство не объекта

Вот где проблема, 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 в верхней части страницы для 2-го блока кода. Это более чем if($login) заявление, но это единственное утверждение, относящееся к этому.

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

На какой переменной? –

+1

В соответствии с вашим кодом ошибка 'пытаться получить свойство не-объекта' относится к' $ users-> premium'. '$ users' не является объектом по какой-либо причине - начните с' var_dump ($ users) 'для его отладки. Возможно, '' userQuery-> fetchObject' возвращает 'false'. –

+0

То, что сказал @OfirBaruch в своем комментарии. Сначала вы должны убедиться, что запрос был успешным. Установлен ли ваш '$ _SESSION ['user_id']'? у вас есть 'session_start();' вверху каждой страницы, в которой вы используете сеансы? – Darren

ответ

1

Ваш вопрос в связи с тем, что ваша $users переменная не является объектом. Это означает, что ваш запрос не удался.

Что привело бы меня к вере из-за $_SESSION['user_id'].

Мы не можем сказать из кода поставки, но вы всегда должны начать сессию на каждой странице вы хотите использовать сессии на:

session_start(); 

Кроме того, вы установите пользовательский идентификатор сеанса опорожнить, прежде чем запустить свой запрос ...

$_SESSION['user_id'] = ''; 

Каких бы оправдывал ваш запрос бесполезен, потому что теперь user_id пусто.

+0

Идентификатор пользователя равен null в моей базе данных? Я полагал, что это должно быть пустым, если бы это был не единственный способ получить премию, это если я набрал их идентификатор каждый раз, когда они хотели купить. – David

+0

@David Почему вы должны установить user_id в 'NULL'? Это уникальный идентификатор .. вам нужно знать, кто такой пользователь – Darren

+0

Я не имел в виду NULL, я имел в виду автоматическое увеличение, извините. Сначала у меня не было идентификатора = на идентификаторе пользователя, и это дало мне ошибку, я изменил его на = '', и он ошибся, я сделал это несколько дней назад, он только начал это делать. Я думал, что исправил это! :( – David

Смежные вопросы