Определение массива функций? - PullRequest
0 голосов
/ 19 апреля 2011

У меня небольшой пробел в понимании того, как функции и массивы работают вместе

У меня есть эта функция, которая получает информацию для входа из формы с именем submitlogin, затем выполняет простой запрос и извлекает массив, если, но только если значения не пусты и возвращает ошибки, если они есть (усеченная эта часть)

function check_login($dbc, $email = '', $pass = '') {

$q = "SELECT user_id, user_type, first_name, time_zone FROM users WHERE email='$e' AND pass=SHA1('$p')";

Затем на самой странице входа в систему я вызываю функцию с указанными значениями

if (isset($_POST['submittedlogin'])) {

    require_once ('includes/login_functions.inc.php');
    require_once ('../mysqli_connect.php');
    list ($check, $data) = check_login($dbc, $_POST['email'], $_POST['pass']);

    if ($check) { // OK!

        // Set the session data:.
        session_start();
        $_SESSION['user_id'] = $data['user_id'];
        $_SESSION['first_name'] = $data['first_name'];
        // Get priviledges
        $_SESSION['user_type'] = $data['user_type'];
        // Store the HTTP_USER_AGENT:
        $_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']);
        //

Обратите внимание, что $_SESSION['user_type'] = $data['user_type']; возвращает правильное значение.

Мой вопрос: как здесь работает синтаксис? :

list ($check, $data) = check_login($dbc, $_POST['email'], $_POST['pass']);

Возможно, лучше сформулировать, как определяются переменные $ check и $ data ?? Ли:

$ check = check_login ($ dbc) и $ data = $ q ??

Разъяснение будет высоко ценится.

Ответы [ 4 ]

2 голосов
/ 19 апреля 2011
list($val1, $val2) = array('val1', 'val2');

сейчас $val1 равно 'val1';, а $val2 равно 'val2'

list($val1, $val2) = array('val1', 'val2', 'val3', 'val4');

у нас есть 2 первых значения из массива (ничего не изменилось в $ val1 и $ val2).

Итак, если вы сделаете что-то вроде

$sql = 'SELECT if(md5(\''.$Password.'\') = password,1,0), username, email FROM users WHERE username = \''.$username.'\'';
$res = mysql_query($sql, $connection);
list($isAuthorized, $username, $email) = mysql_fetch_array($res);

Вы получите массив из 3 элементов, возвращаемых mysql_fetch_array, и передадите их в $isAuthorized, $username и $email переменные.

1 голос
/ 19 апреля 2011

означает, что функция check_login() возвращает массив, имеющий два значения и каждый из них будет присвоен переменной в list()

позвольте вам получить возвращаемое значение из check_login () равно

array('yes','hello');

и с использованием list ($check, $data) = check_login($dbc, $_POST['email'], $_POST['pass']);

означает

$check = 'yes';
$data =''hello';

Ссылка

1 голос
/ 19 апреля 2011

функция check_login возвращает массив, подобный этому:

array('user', 'type', 'first', 'time');

и

list ($check, $data) =  array('user', 'type', 'first', 'time');

$check и $data становится равным первым двум значениям измассив

1 голос
/ 19 апреля 2011

Я не уверен, что вы можете использовать трюк со списком с возвратом из функции, но я могу ошибаться ... Независимо от того, что вам нужно, вы должны вернуть массив из функции.переменные, которые вы даете списку, являются элементами массива в правой части уравнения, поэтому:

list($check, $data) = array('one', 'two');
echo $check; // outputs one
echo $data; // outputs two
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...