ugrás a tartalomhoz

Aktiváció és rang lekérdezése belépéskor

KMartinR4 · 2012. Dec. 8. (Szo), 14.38
Szasztok! Elég kezdő vagyok PHP terén, de egy kis segítséggel sikerült összedobnunk egy regisztrációs rendszert az oldalhoz, ami tökéletesen (elég jól) funkcionál.

Most azonban szeretnék hozzá egy beléptető rendszert. Az alapjai megvannak, de az aktiváció és a rang lekérdezésével meggyűlt a bajom. És nem is igazán tudom, hogy kezdjek hozzá.
Eddig ez a kód:

<?php
	if(isset($_POST["login"]))
	{
		// Problémás karakterek cseréje, hackervédelem
		$chars = array('&', '<', '>', "\r\n", '&amp;#', "\\", '"', "'", '=', '%', '`', '$', '@', '&#92;&#');
		$entities = array('&amp;', '&lt;', '&gt;', '<br />', '&#', '&#92;', '&#34;', '&#39;', '&#61;', '&#37;', '&#96;', '&#36;', '&#64;', '&#');
		
		$name = str_replace($chars, $entities, trim($_POST["name"]));
		$password = str_replace($chars, $entities, $_POST["password"]);
		
		include('connect_open.php');
		// A felhasználónév és jelszó lekérdezése
		$result_for_act = mysql_query("SELECT * FROM felhasznalok WHERE name = '".mysql_real_escape_string($name)."' AND password = '".mysql_real_escape_string(sha1($password))."'");
		$validator_for_act = mysql_num_rows($result_for_act);
		// Ha létezik a felhasználó és a jelszó
		if($validator_for_act == 1)
		{
			// Ide kéne az aktiváció lekérdezése
			mysql_query("UPDATE felhasznalok SET logtime = ".time()." WHERE name = '".mysql_real_escape_string($name)."'");
			$_SESSION['name'] = $name;
			// Ide kéne a rang lekérdezése, és sessionbe rakása
			echo '<div class="notice">Sikeres belépés!</div>';
		// Ha nincs ilyen felhasználónév vagy jelszó
		}else{
			echo '<div class="warning">Rossz felhasználónév vagy jelszó!</div>';
		}
		include('connect_close.php');
	}
?>
Már minden megvan, csak az aktivációt és a rangot nem tudom, hogy kéne lekérdezni.
Segítségeteket előre is köszönöm!

Ui.: Még annyit segítségként, hogy a táblában az active oszlop értéke 0, ha nincs aktiválva, és 1, ha aktiválva van a felhasználó.
 
1

Micsoda?

Poetro · 2012. Dec. 8. (Szo), 16.44
Micsoda a rang és az aktiváció, és honnan akarod lekérdezni? Ha a felhasznalok táblában van, akkor a fenti lekérdezésben már megtetted.
2

Az aktiváció már megvan

KMartinR4 · 2012. Dec. 8. (Szo), 17.16
Na, a lekérdezés valóban megvolt, csak azt nem tudtam megcsinálni, hogy csak akkor hajtódjon végre a bejelentkezés, ha már aktiválva van a felhasználó. De ez már megvan

Már csak a következő kellene, a rangot (rank oszlop) ki kéne írni egy sessionbe. És nem tudom, hogy kell szelektálni azt, hogy csak a rank értéke kerüljön a $_SESSION['rank']-ba.

Ehhez kellene még segítség.
3

Itt a kód:

KMartinR4 · 2012. Dec. 8. (Szo), 17.36
Itt a kód:

<?php
	if(isset($_POST['login']) && !isset($_SESSION['name']))
	{
		$chars = array('&', '<', '>', "\r\n", '&amp;#', "\\", '"', "'", '=', '%', '`', '$', '@', '&#92;&#');
		$entities = array('&amp;', '&lt;', '&gt;', '<br />', '&#', '&#92;', '&#34;', '&#39;', '&#61;', '&#37;', '&#96;', '&#36;', '&#64;', '&#');
		
		$name = str_replace($chars, $entities, trim($_POST["name"]));
		$password = str_replace($chars, $entities, $_POST["password"]);
		
		include('connect_open.php');
		$validator_for_act = mysql_num_rows(mysql_query("SELECT * FROM felhasznalok WHERE name = '".mysql_real_escape_string($name)."' AND password = '".mysql_real_escape_string(sha1($password))."'"));
		if($validator_for_act == 1)
		{
			$validator_active = mysql_num_rows(mysql_query("SELECT * FROM felhasznalok WHERE name = '".mysql_real_escape_string($name)."' AND active = '".mysql_real_escape_string('1')."'"));
			if($validator_active == 1)
			{
				mysql_query("UPDATE felhasznalok SET logtime = ".time()." WHERE name = '".$name."'");
				$_SESSION['name'] = $name;
				// ITT a rank oszlopot a rank sessionbe kéne írni!
				echo '<div class="notice">Sikeres belépés!</div>';
			}else{
				echo '<div class="warning">A felhasználói fiókod nincs aktiválva!</div>';
			}
		}else{
			echo '<div class="warning">Rossz felhasználónév vagy jelszó!</div>';
		}
		include('connect_close.php');
	}
?>
4

$validator_for_act =

Poetro · 2012. Dec. 8. (Szo), 17.46
$validator_for_act = mysql_fetch_assoc(mysql_query("SELECT * FROM felhasznalok WHERE name = '".mysql_real_escape_string($name)."' AND password = '".mysql_real_escape_string(sha1($password))."'"));
if (!empty($validator_for_act)) {
  if (!empty($validator_for_act['active'])) {
    $_SESSION['name'] = validator_for_act['name'];
    mysql_query("UPDATE felhasznalok SET logtime = ".time()." WHERE name = '".$name."'");  
    $_SESSION['rank'] = validator_for_act['rank'];
  } else{  
    echo '<div class="warning">A felhasználói fiókod nincs aktiválva!</div>';  
  } 
} else{  
  echo '<div class="warning">Rossz felhasználónév vagy jelszó!</div>';  
}
nem próbáltam ki, csak szemléltetés végett. (emptyempty az igazából csak empty)
5

Működik

KMartinR4 · 2012. Dec. 8. (Szo), 18.00
Nagyon köszönöm, minden jól működik! :)