现在我通过提交表单可以实现登录了,但我的要求是要实现自动登录 <form action="{$MODULE[member][url]}login.php" method="post" name="login" onsubmit="return loginSubmit(this, {PASSPORT_ENABLE});"> 这是原来系统的提交表单的地址指向我通过http://******/login.php?username=$user&password=$password这样传递过去参数后不被接受页面识别。。怎么才能实现自动登录呢。
不过这样做比较危险
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 测试内容已经传递到这个页面了,为什么蓝色部分不引用呢。。
直接跳转到login.php验证用户名和密码正确的操作。
在login.php页面加入如下代码if(isset($_GET['usernam']) && isset($_GET['password']) && $_GET['password'] != '' && $_GET['usernam'] != ''){
$_POST['usernam'] = $_GET['usernam'];
$_POST['password'] = $_GET['password'];
}