Help - Search - Members - Calendar
Full Version: Belépőrendszer
photoshop és webszerkesztés - tutorial.hu > www.tutorial.hu > Programozás
Another
Hello,

Akarok csinálni egy belépőrendszert, csak PHP és MySQL felhasználásával. Már régebben egyszer sikerült megcsinálnom egy ilyet, de most valamiért nem jön össze. Az oldal címe: htt://bogey.fw.hu/
Leírom, hogy kb milyenre gondoltam, és hogy hogyan álltam neki.

Elképzelés:
- Regisztráció
- Belépés
- Különböző jogok (Operátor, VIP, User)
- Jogoknak megfelelően különböző menü betöltése
- Session használata, a belépéskor
- Felhasználónév
- E-mail cím
- Jog
(Lehet, hogy még lenne majd más is)

Hogyan álltam neki:
Az oldal úgy épül fel, hogy van egy page változó, amit mindig akkor küld el, ha új oldalra akar lépni (?page=1, ilyenkor például a hírek oldal töltödik be). Az index.php nyílik meg minden alkalomkor, csak mindig más az, amit a táblázat egyes részeibe betölt. Az csináltam, hogy a index.php elejére beírtam, hogy session_start(); majd ahol be akartam illeszteni a belejelntkezést (a felhasználói menü is itt lesz majd), oda beírtam azt, hogy if($_SESSION["UserName"] =! "") { /* a felhasználói menü */ } else { /* a belejentkezés */ }. És csináltam egy olyat, hogy a felhasználói menünél, legyen egy olyan pont (Harmadik menü), hogy ki tudjon jelentkezni a felhasználó. Nem sikerül kijelentkeztetni. A fájlba, ami ezt csinálja beírtam, hogy print("valami");, hogy egyeltalán lefut-e. És kiírta, hogy valami, szóval igen. A fájl tartalma ez:
<?php
$_SESSION["UserName"] = "";
$_SESSION["UserMail"] = "";
$_SESSION["UserJog"] = "";
session_destroy();
print("valami");
?>
Először még nem volt bent a session_destroy();, de később azt is betettem. És mivel ez a fájl előbb van be include-olva, mint, hogy ellenőrzi, hogy if($_SESSION["UserName"] =! "") { .. }, ezért amikor ellenőrzi, akkor már elvileg üresnek kell lennie a UserName-nek. Na de nem üres. Mert ugyanúgy betölti a felhasználói menüt. És a UserName értéke 1. (a menü legfelső részében az van, hogy Print("Üdvözöllek.$_SESSION["UserName"]); )
BlackY
<?PHP
session_destroy();
session_start();
?>
Azért nem műxik, mert a destroy az egész session-t törli...
A te barátod inkább a
<?PHP
session_unset();
?>
lesz..

BlackY
Another
Próbáltam azzal is, és még a session_unregister()-el is. Egyikkel se ment. Így írtam session_unset($_SESSION["UserName"]); , session_unregister($_SESSION["UserName"]);.
BlackY
Próbáld ki, hogy nem csinálsz semmit a session-nel, hanem inkább
unset($_SESSION['username']);
és a többi...

BlackY
Another
Így sem sikerült. Valami más gond lesz itt sztem, de nem tudom, hogy mi.
BlackY
Nem lehet, hogy a két cucc között (törlés -> if) valami még felülírja?

BlackY
Another
Végig néztem a fájlt, de nem találtam benne olyat. Egyedül akkor lehetne felülírni, ha közben lefutna az enter.php, de ez nem futhat le, mert még sehol sincs belinkelve.
BlackY
Erre annyit tudok mondani, hogy KELL, hogy legyen valami, ami nem stimmel, különben a leírtak szerint működnie kéne... biggrin.gif
Különösen az-az 1-es érték gyanús... gondolkodik.gif

BlackY
Another
Az index.php így kezdődik:
<?php
session_start();
ob_start();
include("data.php");
if($page == "") { $page = 1; }
$site = 'None site';
if($page == 14) { $page = $dd; include("fastps.php"); }
if($page == 15) { $page = $dd; include("logout.php"); }
..//Itt az if()-ek folytatódnak.
?>
<html>
<head>
<meta http-equiv="Content-Language" content="hu">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Public File Share</title>
<link rel="stylesheet" type="text/css" href="general.css">
<script language="javascript" src="general.js"></script>
</head>
<body text="#333333" onload="JSClock()">
<div align="center"><table id="MainTable" cellspacing="0" cellpadding="0" style="border-style: solid; border-width: 0">
<tr>
<td rowspan="2" width="300" align="center" valign="top">
<?php
if($_SESSION["UserName"] =! ""){
print("<table border=\"0\" width=\"250\"><tr><td bgcolor=\"#999999\" colspan=\"2\" id=\"NormalLetter\" align=\"center\">Üdvözöllek ".$_SESSION["UserName"]."</td>
</tr><tr><td id=\"WhiteAlpha\"><span id=\"SmallLetter\">Első menü</span></td></tr><tr>
<td id=\"WhiteAlpha\"><span id=\"SmallLetter\">Második menü</span></td></tr><tr>
<td id=\"WhiteAlpha\"><span id=\"SmallLetter\"><a href=\"?page=15&dd=".$page.$dat."\">Harmadik menü</a></span></td>
</tr></table><br>");
} else {
print("<form><table border=\"0\" width=\"250\"><tr><td bgcolor=\"#999999\" colspan=\"2\" id=\"NormalLetter\" align=\"center\">Bejelentkezés</td>
</tr><tr><td id=\"WhiteAlpha\"><span id=\"SmallLetter\">Felhasználónév:</span></td><td id=\"WhiteAlpha\" align=\"center\">
<input type=\"text\" name=\"UserName\" size=\"20\" tabindex=\"1\"></td></tr><tr><td id=\"WhiteAlpha\"><span id=\"SmallLetter\">Jelszó:</span></td>
<td id=\"WhiteAlpha\" align=\"center\"><input type=\"password\" name=\"PassWord\" size=\"20\" tabindex=\"2\"></td></tr>
<tr><td id=\"WhiteAlpha\" colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"Enter\" tabindex=\"3\" value=\"Belépés\"></td></tr>");
if($ok != "" && $ok) {
print("<tr><td id=\"WhiteAlpha\" colspan=\"2\" align=\"center\"><span id=\"SmallLetter\"><font color=\"#ff0000\">HIBA: Rossz adatok</font></span></td></tr>");
}
print("</table></form>");
}
?>

Nem tudom, hogy ebből mennyire látszik, de itt nincsen felhasználva a $_SESSION["UserName"]. Sehol máshol az oldalon eddig nem használtam session-t, szóval csak egyedül az enter.php tudja megváltoztatni.
BlackY
Próbáld úgy, hogy unset($_SESSION['username']) és utánna nem a != "" hanem isset($_SESSION['username'])...

Amúgy ötletem sincs, hogy mi lehet...

BlackY
RoolY
Lehet hogy hülyeséget mondok, de
CODE
($_SESSION["UserName"] =! "")
helyett nemlehet hogy
CODE
if($_SESSION["UserName"] = ! "")
??

Rooly
RoolY
Egy próbát megér. closedeyes.gif

Rooly
BlackY
Öööö...
A nem egyenlőnek a jele ugye az egyenlőség tagadása, tehát ! (tagadás) = (egyenlő)... !=

BlackY
toxin
alapkomponenseket miért nem a PEAR-ről szeditek, mondjatok logikus érvet és akkor megnyugszom smile.gif

http://pear.php.net/packages.php?catpid=1&...=Authentication
Another
QUOTE(toxin @ 2005. Jan 8., 21:07)
alapkomponenseket miért nem a PEAR-ről szeditek, mondjatok logikus érvet és akkor megnyugszom smile.gif

http://pear.php.net/packages.php?catpid=1&...=Authentication
*


Szeretek mindent magam megcsinálni....
toxin
én spec szeretek rendszeremnek olyan auth. rendszert választani amit sokan tesztelnek, és nem a saját bőrömön tapasztalom a saját rendszerem hiányoságainak káros következményeit wink.gif smile.gif
BlackY
Én is ezt akartam írni smile.gif
És nem is, hogy szeretek, hanem valamilyen szinten kötelességemnek érzem, hogy ha már valamihez a nevem adom, akkor abban a lehető legtöbb mindent én írjam smile.gif

BlackY
Another
A hozzászólásodon javítok egy kicsit, remélem nem bánod:
én spec szeretek (másokáltíl írt) rendszeremnek olyan auth. rendszert választani amit sokan tesztelnek, és nem a saját bőrömön tapasztalom a nem saját rendszerem hiányoságainak káros következményeit wink.gif smile.gif

Így már jobb.
toxin
ezt majd holnap feldolgozom, ma aludtam 4 órát + teniszeztem 3 órát + csocsóztam rá 3 órát smile.gif bőőőőő mi volt a baj ? crazy.gif

--
ja fogom már tongue.gif biggrin.gif biggrin.gif biggrin.gif, hát én saját rendszert nagyon régen még az elején próbáltam összerakni, munkában már nem volt nyerő (sokáig tart elkészíteni, sokat kell tesztelni, van benne mindig hiba ami általában az ügyfélnél jön elő stb.),

PEAR-es cuccokban pedig eddig még nem csalódtam, csak + -ak a tapasztalataim smile.gif ajánlom is mindenkinek, lehet nem munka lenne akkor én is máshogy állnék hozzá

de most abszolúte nincs agyam mentem is hajcsizni smile.gif PEACE !
Another
Most sikerült megcsinálni azt, hogy ne egyből a felhasználói menüt írja ki. Viszont most az a gond, hogy nem tudok bejelentkezni. Megnéztem a forráskódját a honlapnak. A form része ez volt:
CODE

<form>
<table border="0" width="250">
 <tr>
  <td bgcolor="#999999" colspan="2" id="NormalLetter" align="center">Bejelentkezés</td>
 </tr>
 <tr>
  <td id="WhiteAlpha"><span id="SmallLetter">Felhasználónév:</span></td>
  <td id="WhiteAlpha" align="center"><input type="text" name="UserName" size="20" tabindex="1"></td>
 </tr>
 <tr>
  <td id="WhiteAlpha"><span id="SmallLetter">Jelszó:</span></td>
  <td id="WhiteAlpha" align="center"><input type="password" name="PassWord" size="20" tabindex="2"></td>
 </tr>
 <tr>
  <td id="WhiteAlpha" colspan="2" align="center"><input type="button" name="Enter" tabindex="3" value="Belépés" onclick="?page=15&dd=1"></td>
 </tr>
</table>
</form>

Próbáltam úgy is, hogy nem onclick-be teszem az urlt, hanem action-be, de ott úgy sem sikerült.
BlackY
Rakd be input type="submit"-ra a button-t és a form-nak adj egy action="index.php?page=15&dd1" és method="post" v. method="get" (inkább előbbi) paramétert...

BlackY
Another
QUOTE(BlackY @ 2005. Jan 9., 15:43)
Rakd be input type="submit"-ra a button-t és a form-nak adj egy action="index.php?page=15&dd1" és method="post" v. method="get" (inkább előbbi) paramétert...

BlackY
*


Sikerült megcsináli, de egy kicsit át kellet írni a php-t. Az ellenőrzés isset-el van, a törlés unset-el, a gomb submit, és a form actionjában van az url.
Erik
Üdv mindenki!
arra szeretnélek titeket megkérni, hogy légyszíves magyarázzátok el nekem, hogy hogyan kell használni a session-okat!
nem igazán értem, hogyan működik.
itt ebben a topikban (is) sokat írtok róla a forráskódokban is, de mindegyik egy másiknak a folytatása és így teljes a káosz és türelmem sincs végigolvasni...
hogyha meg pl a php.net-en akarnám elolvasni az meg egy kicsit magasröptű nekem...
előre is kösz! gondolkodik.gif unsure.gif
C.o.D.er.
Hali.
hogy lehet azt megoldani h van egy fügvényem ami auth-ol(PHP Tutor topicban ban közétettem. az 0.0 verzió(de már javítgatam pár dolgot rajta de az elv ugyan az))és 2 változót fogad el.de én azt akarom hogy mivel két felől is megkaphatom az adatot egy változóból ezt tettem:
CODE

$adminname = $_POST['name'] or $_SESSION['adminname'];
$adminpass = $_POST['pass'] or $_SESSION['adminpass'];


lehet ilyet vagy bonolítsam még be fögvény elenörzésekel? gondolom nem jó de hátha respect2.gif
LuXoid
Hali!
Lenne egy nagy kérésem, ill kérdésem! Szeretnék egy feltöltést és egy fórumot kreálni a flashben készülő oldalamra, amit csak bejelentkezett, regisztrált felhasználók tudnak ígénybe venni!
Nos a problémám ott kezdődik, hogy miképpen is lehet Flashen belül php és java nélkül, csak action scriptekkel regisztráció/login részt kreálni, ha lehet? Ha engedi időtök, akkor légyszike segítsetek nekem ebben, mivel én inkább grafikával foglalkoztam eddig, aztán nem mozgok még annyira otthonosan ebben a témában.
Előre is köszi!
LuXoid
BlackY
PHP - Flash kapcsolat, asszem loadVars a neve annak az AS objektumnak, amivel ezt meg lehet valósítani (meg persze van xml is, de arról fogalmam sincs, hogy hogy hívják sad.gif ).

Mellé benyomsz egy PHP szkriptet a szerverre, ami regel, beloginol, stb.

BlackY
bugadani
Egy gyors kérdés: a süti- és sessionmentes bejelentkezés mennyire megbízható?
Értem ezalatt:
user belép, bekerül az adatbázis login_ip oszlopába az ip-je, login_time oszlopba pedig a belépés ideje. A rendszer meg vizsgálja az ip-t és az időt...
Ez mennyire lenne életképes? Mert nem kéne vesződni a sütikkel/sessionokkal, csak az adatbázis, és így meg lehetne oldani a kiléptetést is libikoka.gif
vagy ez thk.gif halott ötlet?
BlackY
Halottabb nem is lehetne. Ha mondjuk belépnék admin joggal, és a másik gépnél elmennék a site-ra ott is full jogom lenne, mivel a router miatt azonos IP-címe van a két gépnek. Ha még egy böngészőt is tárolsz, akkor már jobb a szitu, de két FX vagy IE ugyanúgy összeakad.
Szal felejtős...

BlackY
bugadani
Kösz
LuXoid
Kösz az infot! Próbálkozom vele!
Erik
heló!
abba kéne segíteni, hogy hogyan lehet beállítani, hogy olyan auth ablakot dobjon fel? gondolkodik.gif

mint itt...
ebben a segédletben...

összevonta LeGaS
BlackY
Ott van a Zsola hozzászólására mutató link, amiben le van írva a szükséges HTTP fejléc:
http://www.tutorial.hu/forum/index.php?sho...dd%20user&st=19

BlackY
vackor
Sziasztok!
Lenne egy nagy problémám.
Csináltam anno egy egyszerű beléptetőt. A regisztrációval nincs semmi probléma, de a belépésnél (nálam még sosem jelentkezett ez a hiba) azt a hibaüzenetet írja ki, hogy nem írtak felhasználónevet.
Arra gondolni sem merek, hogy a felhasználó nem ír be semmit.

Bele tudnátok nézni, hogy esetleg mi lehet a gond vele?

CODE
<?php
session_start();

if (empty($_SESSION['user'])){

?>

<table cellpadding="4" cellspacing="2" align="center" class='text' border="1"><form name="belep" action="belep2.php" method="post">
<tr><td colspan="2" align="center">Belépés</td></tr>
<tr><td align="right">Név: </td><td><input type="text" name="nev" value="<?=$_POST['nev'] ?>" size="25"></td></tr>
<tr><td align="right">Jelszó: </td><td><input type="password" name="jelszo" value="<?=$_POST['jelszo'] ?>" size="25"></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit" value=":: Belépek ::"></td></tr>
</form>

<?
}else{ echo "<table cellpadding='4' cellspacing='2' align='center' class='text'>
              <tr><td colspan='2' align='center'>Szia ".$_SESSION['user']."</td></tr>
              <tr><td colspan='2' align='center'><a href='belep2.php?oldal=kilep'>Kilép</td></tr>
              </table>";
      }

if (isset($_POST['submit'])){
if (empty($_POST['nev'])) {echo "<tr><td colspan='2' align='center'>Nem írtál felhasználónevet!</td></tr>"; exit;}
if (empty($_POST['jelszo'])) {echo "<tr><td colspan='2' align='center'>Nem írtál jelszót!</td></tr>"; exit;}

include ("log.php");
$tag = mysql_query(" SELECT * FROM tarik_login WHERE user='".$_POST['nev']."' ") or die(mysql_error());
$ellenoriz  = mysql_fetch_object($tag);
if ($ellenoriz->user == ""){echo "<tr><td colspan='2' align='center'>Ilyen néven nincs regisztált felhasználó</td></tr>";}
elseif ($_POST['jelszo'] != $ellenoriz->pass) {echo "<tr><td colspan='2' align='center'>A beírt jelszó nem megfelelő</td></tr>";}
else{
    $id = $ellenoriz->id;
    $_SESSION['user'] = $ellenoriz->user;
    $pass = $ellenoriz->pass;
    $_SESSION['email'] = $ellenoriz->email;
    $_SESSION['aktivalva'] = $ellenoriz->aktivalva;
    $ossz = $ellenoriz->ossz;
echo "&lt;script language=javascript>window.location='belep2.php';</script>";
}}
echo "</table>";


?>


Köszönöm előre is a segítséget.
BlackY
Hát ez így ránézésre is több sebből vérzik, de a nem írtál felhasználónevet üzinek - ha tényleg írtak - elvileg nem kéne megjelennie.
Viszont néhány észrevétel:
CODE
if (isset($_POST['submit'])){
if (empty($_POST['nev'])) {echo "<tr><td colspan='2' align='center'>Nem írtál felhasználónevet!</td></tr>"; exit;}
if (empty($_POST['jelszo'])) {echo "<tr><td colspan='2' align='center'>Nem írtál jelszót!</td></tr>"; exit;}

Azon kívül, hogy csak úgy exitelni nem egy szép dolog, át kéne írni az első feltételt isset($_POST['nev']) && isset($_POST['jelszo']) -ra, és a kód maradékát egy else ágba rakni.

CODE
$tag = mysql_query(" SELECT * FROM tarik_login WHERE user='".$_POST['nev']."' ") or die(mysql_error());

Megintcsak nem szép dolog ledieolni a script lefutását, továbbá escapelni kéne a usertől származó adatot, és egyszerűbb lenne, ha már itt hozzáadnál még egy feltétel, hogy jelszó ez és ez. Pl.: így:
CODE
'SELECT count(id) FROM tarik_login WHERE user="' . mysql_escape_string($_POST['nev']) . '" AND pass=MD5("' . mysql_escape_string($_POST['jelszo']) . '")'

Aztán már csak egy current(mysql_fetch_array($tag)) == 0 vizsgálattal el kell döntened, hogy jó volt-e a user/pass páros vagy sem. (Remélem észrevetted, hogy beleraktam az md5 hash képzést is wink.gif )

Szal egy újraírást megérne, nem hosszú idő azt wink.gif

BlackY
vackor
Köszönöm BlackY!
Átírom, aztán jelentkezem. biggrin.gif respect2.gif
BlackY
Akkor még néhány tipp
- Válaszd le a beléptetést/ellenőrzés végzést a megjelenítéstől (értsd: legyen egy auth függvényed, ami visszaad egy user id-et (bejelentkezett user) vagy nullt (vendég), ez ellenőrizze, hogy jött-e post-olva usernév, stb.).
- Session-ben csak user azonosítót tárolj (mert ugye van auto_inc-es mező a usereket tartalmazó tábládban? wink.gif )
- mysql_fetch_object helyett én ajánlom az array-t, de teljesítményben minimális a különbség (ha van egyáltalán), így ez csak megszokás kérdése.

BlackY
vackor
Az a baj, hogy azt gondolod rólam, hogy én is vágom ezeket a dolgokat. (Öreg vagyok már ahhoz, hogy mindent megértsek röptében) fejetfalba.gif

Egyelőre leragadtam a mysql_escape_string() és a current() függvénynél. Most mazsolázom. Akkor hozzá veszem az auth() is.

Kedves BlackY! Nem lehetne egy kis demóval köríteni a dolgokat, mint ahogy az előzőben is tetted?

Megköszönném!


Anybudi
QUOTE(toxin @ 2005. Jan 8., 22:07) *
alapkomponenseket miért nem a PEAR-ről szeditek, mondjatok logikus érvet és akkor megnyugszom smile.gif

http://pear.php.net/packages.php?catpid=1&...=Authentication

Nekem valahogy a "mindenre PEAR"-es megoldástól mindig olyan ágyúval verébre érzésem támad...
devilion
Hali mindenkinek!

Rátaláltam erre a login rendszerre, admin funkciókkal stb (lehet h van aki ismeri), de az a bajom, h nem tudom bőviteni (avatar, msn, aláirás stbstb), és megpróbáltam utána járni, de nem nem találtam semmit sad.gif....

Login System v2.0

Vki tudna segiteni ebben????
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2012 Invision Power Services, Inc.