2016-07-16 2 views
1

Я хотел бы сделать следующее, но не получится.

$user_id = $_REQUEST['user_id']; 

if (/* nothing to be requested*/) { 
    echo "<button>Log In</button><button>Sign Up</button>"; 
} else { 
    /* logged in, check if the user is an admin or not */ 
    if (/* he is admin */) { 
    echo "<button>Admin</button><button>Logout</button>"; 
    } else { 
    /* then he is just a normal user */ 
    echo "<button>Logout</button>"; 
    } 
} 

Оригинальный код:

$user_id = $_REQUEST['user_id']; 
if (!$user_id) { 
    echo "<button>Log In</button><button>Sign Up</button>" 
} else { 
    $check_sql = "SELECT admin from users where user_id = {'$user_id'}"; 
    $result = mysqli_query($con, $check_sql); 
    $rows = mysqli_fetch_array($con, $result); 
     if ($rows['admin'] == 1) { 
     echo "<button>Admin</button><button>Log Out</button>"; 
     } else { 
     echo "<button>Log Out</button>"; 
    } 
} 

Когда есть user_id быть $ _REQUEST, код работает отлично. Но просто потерпите неудачу, когда нет ничего, чтобы быть $ _REQUEST. Не могли бы вы помочь?

Большое спасибо!

+0

поставить это: если (пусто ($ user_id)) – bfahmi

+0

использовать, если (пусто ($ user_id)) {} – JYoThI

+0

использовать это, если (Исеть ($ user_id)!) – rajeev

ответ

1

Во-первых, обратите внимание, что код уязвим для атак SQL-инъекций. Это очень серьезно. Вы должны использовать параметризованные запросы или избегать переменной $user_id.

http://php.net/manual/en/security.database.sql-injection.php

Также обратите внимание, что ваш код может быть уязвимым для кого-то, заходящего в $user_id себя, таким образом, возможно получение прав администратора, когда они не должны. Это связано с тем, что вы используете $_REQUEST, и эти значения могут быть заданы запросом в манерах, которые вы, возможно, не ожидаете. Кроме того, вы можете сохранить user_id в $_SESSION.

http://php.net/manual/en/ini.core.php#ini.request-order

http://php.net/manual/en/reserved.variables.session.php

Что касается проверки на $user_id, он должен быть:

if(empty($user_id)) 

Вы также можете обрезать $user_id.

Если вы используете PHP 5.5 <:

$user_id= trim($user_id); 
if(empty($user_id) 

Если вы используете PHP> = 5,5

if(empty(trim($user_id)) 

Определить, считается ли переменная быть пустым. Переменная считается пустой, если она не существует или ее значение равно FALSE. empty() не генерирует предупреждение, если переменная не существует.

http://php.net/manual/en/function.empty.php

+0

Большое спасибо Джошу К, атака инстинктов станет моим следующим шагом. Еще раз спасибо! – Kenny

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