函数数组定义?

时间:2011-04-19 04:53:28

标签: php arrays function login

我对函数和数组如何协同工作的理解略有差距

我有这个函数从一个名为submittedlogin的表单中获取登录信息,然后执行一个简单的查询并获取数组,如果是,但只有当值不为空时才返回错误,如果有(截断那部分)

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 个答案:

答案 0 :(得分:2)

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);

您将获得mysql_fetch_array返回的3个元素数组,并将其传递给$isAuthorized$username$email变量。

答案 1 :(得分:1)

我不确定你可以使用函数返回的列表技巧,但我可能会弄错...无论如何,你都需要从函数返回一个数组。你给列表的变量是等式右边的数组元素,所以:

list($check, $data) = array('one', 'two');
echo $check; // outputs one
echo $data; // outputs two

答案 2 :(得分:1)

函数check_login返回如下数组:

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

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

$check$data等于数组中的前两个值

答案 3 :(得分:1)

这意味着函数check_login()返回一个具有两个值的数组 并且每个都将分配给list()

中的变量

让你从check_login()得到返回值是

array('yes','hello');

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

装置

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

Reference