Aktiviert oder Nicht Aktiviert?

Wais
Peazn,

Ich hab eine Frage ich hab mir ein Code geschrieben mit Aktivierung eines Users und ich hab jetzt ein Problem mit dem Login, es soll überprüft werden ob ein User aktiviert ist oder nicht....

Zitat:
Login Code
$sql="SELECT UserId
FROM users
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result= mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result)==1){

$user=mysql_fetch_assoc($result);
return $user['UserId'];


}else{
return false;
}


DB Struktur


Zitat:
DB Struktur
CREATE TABLE `users` (
`UserID` int(11) NOT NULL auto_increment,
`UserName` varchar(30) NOT NULL default '',
`UserPass` varchar(32) NOT NULL default '',
`UserSession` varchar(32) default NULL,
`UserCode` varchar(10) NOT NULL default '',
`UserDate` datetime NOT NULL default '0000-00-00 00:00:00',
`UserActive` tinyint(1) unsigned default '0',
`UserMail` varchar(150) NOT NULL default '',
`UserICQ` varchar(25) NOT NULL default '',
PRIMARY KEY (`UserID`),
UNIQUE KEY `NickName` (`UserName`),
UNIQUE KEY `UserMail` (`UserMail`)
) TYPE=MyISAM AUTO_INCREMENT=12 ;



GreenRover
also du hast jetzt 2 möglichkeiten:

die eine währe mit Benachrichtigung des user und die andere ohne, kannst es dir ja angucken. wie es bei dir passt, da ich mom sehe das der Login cide zu eienr Funktion gehört oder ??

Mit Benachrichtiguns Funktion:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<?php $sql="SELECT `UserId`, `UserActive` FROM `users`
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') LIMIT 1";

$resultmysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result)==1)
{

 list($userid$useractiv)=mysql_fetch_row($result);
 if ($useractiv==1)
 {
  return $userid;
 } else {
  return "not_activ";
 }
}else{
 return "user_or_pw_false";
} ?>


wo bei du dan bei der ausgabe der funktion mit is_numeric überprüfen kannst ob die rückgabe eine user_id ist oder ein Fehler code ist und denn dann eien fehlermeldung ausgeben kannst.

z.B. so:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
<?php $fehlermeldung="";
$userid=do_login($_REQUEST['username'], $_REQUEST['passowrd']);

if(is_numeric($userid))
{
 ### mache das was passieren soll wenn login koreckt was
} else {
 switch ($userid)
 {
  case "not_activ"$fehlermeldung.="Bitte aktivieren Sie sich erst.<br>"; break; 
  case "user_or_pw_false"$fehlermeldung.="Benutzername oder Passwort sind üngültig<br>"; break; 
  default: $fehlermeldung.="Logindaten ist fehlgeschlagen<br>"; break;
 }
}


if (strlen($fehlermeldung)>0)
{
 echo $fehlermeldung;
 ## Zeige Login Form
?>


Oder halt die einfache Möglichkeit:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?php $sql="SELECT `UserId` FROM `users`
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') AND `UserActive`=1 LIMIT 1";

$resultmysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result)==1)
{
 list($userid$useractiv)=mysql_fetch_row($result);
 return $userid;
}else{
 return false;
} ?>
korregiert
Wais
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false){
login($userid);
}else{
echo 'Ihre Anmeldedaten waren nicht korrekt!<br>';
}
}

Ich hab noch ein Problem
GreenRover
das ist PHP code und wo liegt das Problem genau ???
Wais
loool sorry mein PC hat irgendwie gespinnt...

Ja, ich hab ja jetzt die Funktion nur ich bin ein bisschen durcheinander irgendwie...

Ich verpeile gerade voll wie ich des jetzt anordnen muss. Könnt ihr mir vllt helfen?

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?php if (isset($_POST['login'])) 
{ 
$userid=check_user($_POST['username'], $_POST['userpass']); 
if ($userid!=false){ 
login($userid); 
}else{ 
echo 'Ihre Anmeldedaten waren nicht korrekt!<br>'; 
}
} ?>
GreenRover
Oh habe noch was vergessen zu ändern bie dier 2ten funktion:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?php $sql="SELECT `UserId` FROM `users`
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."') AND `UserActive`==1 LIMIT 1";

$resultmysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result)==1)
{
 list($userid$useractiv)=mysql_fetch_row($result);
 return $userid;
}else{
 return false;
} ?>