Php 如果结果与表值相同,请检查数据库
有了这个脚本,我可以检查用户名和密码,这样我就可以看到rturn 2的值了Php 如果结果与表值相同,请检查数据库,php,sql,Php,Sql,有了这个脚本,我可以检查用户名和密码,这样我就可以看到rturn 2的值了 if( $result == false ) { $packet->AddDWValue( "fail" ); $packet->AddDWValue( "incorrect username and/or password" ); .... 如果用户通过true: $packet->AddDWValue( "ok" ); $packet->Add
if( $result == false )
{
$packet->AddDWValue( "fail" );
$packet->AddDWValue( "incorrect username and/or password" );
....
如果用户通过true:
$packet->AddDWValue( "ok" );
$packet->AddDWValue( "nice." );
....
但是我还需要检查另一个名为“usergroup”的表,所以如果这个表的值是“7”
重新运行其他值,例如:
if( $result == false )
{
$packet->AddDWValue( "fail" );
$packet->AddDWValue( "you are banned" );
....
但是我很困惑怎么做,所以如果可能的话请帮助我
这是我的代码:
<?
class Login
{
function CheckLogin( $username, $password )
{
$MySQL_Host = "localhost";
$MySQL_User = "1";
$MySQL_Pass = "2";
$MySQL_DB = "3";
$tbl_name = "mybb_users";
mysql_connect("$MySQL_Host", "$MySQL_User", "$MySQL_Pass") or die(mysql_error());
mysql_select_db("$MySQL_DB") or die(mysql_error());
$sql="SELECT * FROM $tbl_name WHERE username='$username'";
$result=mysql_query($sql);
if( $result == false )
return false;
// fwrite($fh, $result);
// fclose($fh);
$count=mysql_num_rows($result);
// If result matched $username and $password, table row must be 1 row
if($count==1){
$row = mysql_fetch_assoc($result);
//global $mybb;
if (md5(md5($row['salt']).md5($password)) == $row['password'] ){
return array( 'uid' => $row['uid'] ,
'mail' => $row['email'],
'user' => $username
);
}
}
}
}
class DWAuth
{
var $keys;
function AddDWValue( $val )
{
$this->keys[] = $val;
}
function GetAuthString( )
{
$result = "";
foreach( $this->keys as $c )
{
$result .= $c."#";
}
return $result;
}
}
$login = new Login();
$result = $login->CheckLogin( $result[ 'user' ], $result[ 'pass' ] );
if( $result == false )
{
$packet->AddDWValue( "fail" );
$packet->AddDWValue( "incorrect username and/or password" );
$packet->AddDWValue( 1 );
$packet->AddDWValue( "Anonymous" );
$packet->AddDWValue( "anonymous@example.com" );
$packet->AddDWValue( 0 );
}
else
{
$sessionID = md5( rand() );
$packet->AddDWValue( "ok" );
$packet->AddDWValue( "nice." );
$packet->AddDWValue( $result[ 'uid' ] );
$packet->AddDWValue( $result[ 'user' ] );
$packet->AddDWValue( $result[ 'mail' ] );
$packet->AddDWValue( $sessionID );
}
echo $packet->GetAuthString();
?>
据我所知,您需要从另一个表usergroup
中再选择一个,或者在第一个查询中使用JOIN
,语法取决于您的模式,您可以使用它作为参考:您可以尝试类似的方法
$sql="SELECT *,group_id FROM $tbl_name INNER JOIN usergroup AS ug ON ug.id=".$table_name.".user_group_id WHERE username='$username'";
$result=mysql_query($sql);
$res=mysql_fet_assoc($result);
if( $res[group_id] == 7 )
{
$error_flag=1;//banned
}
else if($result==false)
{
$error_flag=2;//invlid user
}
return $error_flag;
$login = new Login();
$result = $login->CheckLogin( $result[ 'user' ], $result[ 'pass' ] );
if( $result == 1)
{
//your banned code
}
else if( $result == 2)
{
$packet->AddDWValue( "fail" );
$packet->AddDWValue( "incorrect username and/or password" );
$packet->AddDWValue( 1 );
$packet->AddDWValue( "Anonymous" );
$packet->AddDWValue( "anonymous@example.com" );
$packet->AddDWValue( 0 );
}
else
{
$sessionID = md5( rand() );
$packet->AddDWValue( "ok" );
$packet->AddDWValue( "nice." );
$packet->AddDWValue( $result[ 'uid' ] );
$packet->AddDWValue( $result[ 'user' ] );
$packet->AddDWValue( $result[ 'mail' ] );
$packet->AddDWValue( $sessionID );
}
我试了很多次,但每次都失败了,请你帮我做一下,谢谢。你能给我“用户组”表的模式,你想得到哪个字段值吗?这个用户组列来自mybb_用户表,有一个值,比如1或2或。。或者7和值7,只针对被禁止的用户,我需要当用户连接时,如果他的usergroup field=7,那么返回false,哦,所以usergroup是一个字段,我认为它是一个表。在这种情况下,您应该尝试从CheckLogin返回如下数组:数组('uid'=>$row['uid'],'mail'=>$row['email'],'user'=>$username,'usergroup'=>$row['usergroup']);这应该起作用,因为从SELECT*获得的行应该包含表中所有列的值。几乎忘记了,您可以在调用$login->CheckLogin之后检查此值