现在我通过提交表单可以实现登录了,但我的要求是要实现自动登录 <form action="{$MODULE[member][url]}login.php" method="post" name="login" onsubmit="return loginSubmit(this, {PASSPORT_ENABLE});"> 这是原来系统的提交表单的地址指向我通过http://******/login.php?username=$user&password=$password这样传递过去参数后不被接受页面识别。。怎么才能实现自动登录呢。

解决方案 »

  1.   

    把用户名保存在session里面。在有效时间内实现自动登录。
      

  2.   

    如果根据我的这段代码http://******/login.php?username=$user&password=$password应该如何保存到session呢$_session["useranme"]=$username; 这样吗
      

  3.   

    login.php 中用 $_REQUEST 而不是 $_POST 接收数据
    不过这样做比较危险
      

  4.   

    $_session['useranme']=$MODULE[member][url]
      

  5.   

    <?php
    require './include/common.inc.php';if(!$forward) $forward = HTTP_REFERER;
    $forward = htmlspecialchars($forward);
    if(!isset($action)) $action = '';
    if($_userid) showmessage($LANG['you_have_logined'], SITE_URL);$_session["username"]=$_REQUEST['username'];$_session["password"]=$_REQUEST['password'];
      $username=$_session["username"];
      $password=$_session["password"];
    echo $username;
    $check = new times();
    $check->set('checkcode', 3600, 1);
    switch($action)
    {
      case 'ajax':
    $username = iconv('utf-8', CHARSET, $username);
    $password = iconv('utf-8', CHARSET, $password);

    $info = $member->login($username, $password, $cookietime);
    if(!$info)
    {
                $check->add();
    echo '0';
    exit;
    }
    else

    echo 1;
    exit;
    }
    break;    default: if($PHPCMS['enableserverpassport'])
    {
    $loginurl = $PHPCMS['passport_serverurl'].$PHPCMS['passport_loginurl'];
    if(QUERY_STRING) $loginurl .= strpos($loginurl, '?') ? '&'.QUERY_STRING : '?'.QUERY_STRING;
    elseif($username && $password && $dosubmit) $loginurl .= "?username=$username&password=$password&cookietime=$cookietime&dosubmit=1";
    header('location:'.$loginurl);
    exit;
    } if($dosubmit)
    {
    if($check->check()) checkcode($checkcodestr, 1, HTTP_REFERER);
    if($PHPCMS['uc'])
    {
    $action = 'login';
    require MOD_ROOT.'api/passport_server_ucenter.php';
    $member->edit_password_username($username, $password);
    }
        $info = $member->login($username, $password, $cookietime);
        if(!$info)
    {
    $check->add();
    showmessage($member->msg(), HTTP_REFERER);
    }
    else
    {
    $check->clear();
    $forward = isset($forward) ? url($forward, 1) : SITE_URL;
    if($PHPCMS['enablepassport'])
                {
            $action = 'login';
    if($PHPCMS['passport_charset'] && $PHPCMS['passport_charset'] != CHARSET)
    {
    $info = str_charset(CHARSET, $PHPCMS['passport_charset'], $info);
    }
    $info['password'] = md5($password);
    extract($info);
    require MOD_ROOT.'api/passport_server_'.$PHPCMS['passport_file'].'.php';
    header('location:'.$url);
                        exit;
    }
    if($cookietime) $jscookiedays = $cookietime/3600/24;
    $script = "<script language='javascript'>";
    $script .= "setcookie('username', '".$username."', '".$jscookiedays."');";
    $script .= "</script>";
                    showmessage($LANG['login_success'].$code.$script, $forward);
    }
    }
    else
    {
    $select = array();
    $cookietime = intval(get_cookie('cookietime'));
    $cookietimes = array(0, 86400, 2592000, 31536000);
    foreach($cookietimes as $v)
    {
    $select[$v] = $v == $cookietime ? 'selected' : '';
    }
    $cok_username = get_cookie('username');
    $cok_auth = get_cookie('auth');
    include template('member', 'login');
    }
    }
    ?>我通过echo 测试内容已经传递到这个页面了,为什么蓝色部分不引用呢。。
      

  6.   

    你的表单提交方式是post的,那么接受方式也是post但是在地址栏提交时get方式的,有结果才怪!
      

  7.   

    在登录的时候生成cookie然后设定下时间只要在登录网站的时候用js,或者php的程序检查下cookie
      

  8.   

    如果要實現自動登錄,那么你完全可以绕过提交表单,而是看原来的{$MODULE[member][url]}login.php接收到提交的内容并验证通过后记录的是什么,一般情况下不是记录session就是cookie.不管记录的是什么你只要在你的程序中直接针对此session或cookie赋值即可.一旦赋值后就能达到原来登陆之后的需求了,这就相当于实现了自动登录.同时也绕过了提交表单.
      

  9.   

    用户登录后把用户名和密码存入cookie.用户打开页面时检测是否有cookie如果有并且检测用户名和密码相符,
    直接跳转到login.php验证用户名和密码正确的操作。
      

  10.   

    如果你非要用get方式登录的话,可以这样操作
    在login.php页面加入如下代码if(isset($_GET['usernam']) && isset($_GET['password']) && $_GET['password'] != '' && $_GET['usernam'] != ''){
        $_POST['usernam'] = $_GET['usernam'];
        $_POST['password'] = $_GET['password'];
    }