2014-09-14 3 views
-1

Я искал сайт и увидел исправления для проблемы, в которых пользователь должен был одинавить кавычки вокруг переменной, но я все еще немного смущен.Использование неопределенной константы в скрипте

Ошибка: (все относится к строке 28) Примечания: Использования неопределенной константы log_id - предполагаемая «log_id» Примечания: Использование неопределенной константы log_username - предполагаемая «log_username» Примечания: Использование неопределенной константы log_password - предполагаются " log_password»

Сценарий:

 <?php 
     session_start(); 

include ("includes/connection.php"); 

$user_ok = false; 
$log_id = ""; 
$log_username = ""; 
$log_password =""; 


function evalLoggedUser($con,$id,$u,$p){ 
    $sql = "SELECT ip FROM users WHERE id='$id' AND username='$u' AND password='$p' AND activated='1' LIMIT 1"; 
    $query = mysqli_query($con, $sql); 
    $numrows = mysqli_num_rows($query); 
    if($numrows > 0){ 
     return true; 
    } 
} 

if(isset($_SESSION["userid"]) && isset($_SESSION["username"]) && isset($_SESSION["password"])) { 
    $log_id = preg_replace('#[^0-9]#', '',$_SESSION['userid']); 
    $log_username = preg_replace('#[^a-z0-9]#i','', $_SESSION ['username']); 
    $log_password = preg_replace('#[^a-z0-9]#i','', $_SESSION ['password']); 

    //VERIFY USER 

    $user_ok = evalLoggedUser($con,log_id,log_username,log_password); 

} else if(isset($_COOKIE["id"]) && isset($_COOKIE["user"]) && isset($_COOKIE["pass"])) { 
    $_SESSION['userid'] = preg_replace('#[^0-9]#', '',$_COOKIE['userid']); 
    $_SESSION ['username'] =preg_replace('#[^a-z0-9]#i','', $_COOKIE ['username']); 
    $_SESSION['password'] = preg_replace('#[^a-z0-9]#i','', $_COOKIE ['username']); 

    //CREATE LOCAL SHORT VARIABLES 

    $log_id = $_SESSION['userid']; 
    $log_username = $_SESSION['username']; 
    $log_password = $_SESSION['password']; 

    if($user_ok == true){} 
    //UPDATE LAST LOGIN TIME 
    $sql = "UPDATE users SET lastlogin=now() WHERE id='$log_id' LIMIT 1"; 
    $query = mysqli_query($con,$sql); 
} 


?> 
+0

и когда эхо переменные? – 2014-09-14 23:06:50

+0

Вы действительно должны использовать подготовленные заявления, потому что то, как вы это делаете, не очень безопасно. –

+0

ошибка говорит точно, что вам нужно. вы используете константы 'log_id' вместо переменных' $ log_id' – Kyborek

ответ

1

Изменить эту строку, вы забыли $ всасывания перед переменными:

$user_ok = evalLoggedUser($con,$log_id,$log_username,$log_password); 
0

Ваш забытый поставить знаки доллара.

Заменить это:

$user_ok = evalLoggedUser($con,log_id,log_username,log_password); 

с этим:

$user_ok = evalLoggedUser($con,$log_id,$log_username,$log_password); 
+0

Какая глупая ошибка, спасибо –

+0

@ user3110815 отметьте ее как решение, если она вам помогла, спасибо –

0
$user_ok = evalLoggedUser($con,log_id,log_username,log_password); 

изменение:

$user_ok = evalLoggedUser($con,$log_id,$log_username,$log_password); 
+0

Спасибо, внимательно просмотрите коды в следующий раз –

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