【问题标题】:Function array definition?函数数组定义?
【发布时间】:2011-04-19 04:53:27
【问题描述】:

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

我有这个函数,它从名为 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??

我们将不胜感激。

【问题讨论】:

    标签: php arrays function login


    【解决方案1】:
    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 变量。

    【讨论】:

    • 这个对我来说最有意义。谢谢!
    【解决方案2】:

    我不确定您是否可以将列表技巧与函数返回一起使用,但我可能会弄错......无论如何,为了做到这一点,您需要从函数返回一个数组。您列出的 vars 是等式右侧的数组元素,因此:

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

    【讨论】:

      【解决方案3】:

      函数check_login返回一个这样的数组:

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

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

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

      【讨论】:

        【解决方案4】:

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

        让你从 check_login() 获取返回值是

        array('yes','hello');
        

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

        意思

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

        Reference

        【讨论】:

          猜你喜欢
          • 2012-03-20
          • 2016-01-04
          • 2020-02-27
          • 2014-09-14
          • 1970-01-01
          • 2019-12-08
          • 2010-09-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多