ugrás a tartalomhoz

Hogyan kell regisztrációs rendszert készíteni?

Anubisss · 2005. Okt. 8. (Szo), 12.03
Nos az lenne a kérdésem h kell regisztráció csinálni egy oldalhoz???
gondolom regelek beirom a felhaszn nevét és a jelszavát akkor ezt elmenti a mysql-be
és ha beakarok lépni akkor beirom a felhasznt és a jelszót.
majd a felhaszn nevére rákeres a mysql-be és ha megvan akkor megnézi helyes e a jelszó ha nem helyes akkor kiirja h hibás jelszó vagy ha nincs ilyen felhaszn akkor meg azt h nincs ilyen és gondolom kéne vmi id ami folyamatosan növekszik de azt elvileg én is megtom.

???
 
1

<Nincs cím>

Anonymous · 2005. Okt. 8. (Szo), 16.21
eddig elvileg ok... aztan amikor itt pozitiv valszt kapsz akkor eltarolod sessionban, hogy bejelentkezett, majd a kodod tovabbi reszet ennek fuggvenyeben alakitod...

if($_SESSION[LOGIN] == "yes") { echo "Sikeres bejelentkezes"; }
if($_SESSION[LOGIN] != "yes") { kiiratod a login vagy regisztracios formot }


domi
2

<Nincs cím>

Anubisss · 2005. Okt. 8. (Szo), 16.45
ok kössz
de innét hova tovább hova kell beálitanom h mit elenőrizen meg stb.???
mert edig nem vágom nagyon
3

Kályhától

Dualon · 2005. Okt. 8. (Szo), 17.08
- Először tervezd meg, pontosan mire lesz szükséged. Milyen mezők, milyen funkciók? Gondold végig, logikailag mit kell tennie a scriptednek - akár még le is rajzolhatod (látogató az oldalon --(vonal--> beléptető űrlap ----> adatokat elküldte ----> stb.)
- Ha kialakult benned a kép, nézz utána a neten, mi kellhet. MySQL adatbevitel, változtatás, törlés? INSERT, UPDATE, DELETE MySQL query-kkel tisztában vagy, ugye? Valamiképp követni kell a usert, erre a session a legalkalmasabb. Sessionkezelés (manual, WL) megy, ugye?
- Kezdd el megírni, amit szeretnél. Ha elakadsz, keress rá google-ben a problémádra.
- Amikor eltöltöttél három órát a net böngészésével, és úgy érzed, baromira sehova sem jutottál, kérdezz egy okosat itt, a Weblaboron.

Ó, és tanulj a hibáidból.
4

<Nincs cím>

Anubisss · 2005. Okt. 9. (V), 13.23
kössz
fogalmam sincs mi az a session
5

talán a linkeket ismered

Hojtsy Gábor · 2005. Okt. 9. (V), 14.08
Tudod, van ott két kék, aláhúzott dolog Dualon segítségében. Lehet, hogy érdemes lenne megpróbálni rájuk kattintani?
6

<Nincs cím>

Anubisss · 2005. Okt. 9. (V), 15.25
már néztem őket de nekem az semmit sem mond.
végülis nekem csak anyi kéne h bejön egy oldal login.php név és jelszó meg egy belépés gomb ha jó a felhaszn akkor átlép az index.php-ra de ott nem kell kiirnia h bevanjelentkezve meg stb. ha nem jó akkor meg kiirja h nincs ilyen felhaszn v hibás jleszó meg egy rigisztráló rész de azt sztem, meg tom csinnni.
szal nekem ez kéne és a z a session kicsit magas ah ott leirja.
az annak készük akimár jól nyomja a php-t.
arra vok kiv h h ellenőrzi le h vane ilyen felhaszn és ha van akkor a jelszó jó e hanem akkor a belépés megtagadva.
7

Éhes esetleg nem vagy? Sapka? Sál?

Dualon · 2005. Okt. 9. (V), 16.11
Anubisss, pontosan mit vársz tőlünk? Kérdezem ezt mindazok után, hogy mind Domi, mind Hojtsy Gábor, mind az én útmutatásom semmibe vetted.

Csinálj egy űrlapot (usernév, pass bekérésére text ill. password input, submit gomb). Az űrlap action attribútuma a feldolgozó php-d legyen.
A feldolgozó php-ban kapcsolódj az adatbázishoz, kérdezd le, h. van-e a regisztrált felhasználóid táblájában a megadott azonosítónak megfelelő személy (tipp: nézz utána a mysql_real_escape_string() függvénynek); ekkor kérd le az azonosítóhoz tartozó, a táblában lévő jelszót is. Ha nincs ilyen user, akkor hibás az azonosító, erről tájékoztasd a belépni kívánót. Ha van, akkor nézd meg, hogy egyezik-e a jelszó a belépni kívánó által megadottal. Ha nem, hibaüzenet, ha igen, akkor tedd be egy session tömbbe mondjuk a 'belepett' indexhez a true értéket, amelyet aztán minden oldalon ellenőrizhetsz.
A http://hu.php.net/manual/hu/ oldalon megtalálsz minden szükséges információt, de irányadóként felsorolok itt neked egy-két dolgot:
- szuperglobális változók, úgy, mint $_SESSION, $_POST
- feltételezem, hogy ingyenes tárhelyet használsz, MySQL adatbázissal, a mysql extension API-jával, tehát a mysql függvények lesznek a Te barátaid
- isset()
- vezérlőszerkezetek, if szerkezete

A fentiek mellett ajánlanám még egyszer előző bejegyzésem.
8

<Nincs cím>

Anubisss · 2005. Okt. 9. (V), 20.18
az elméletet értem csak azt nem tom h pl. h kell megnézni h vane olyan felhaszn és mi a jelszava és ha hibás akkor nem jó.
na de mind1 eljutotam egy ideig.
a regelésig és ahoz h jó legyen a bejelentkezés(bár a regelésnél ha van olyan akkor felülirja na de az most lényegtelen)
szal olyat nem tok h h lép tovább pl ha else akor menjen egy másik oldalra mert csak igy tudtam:
<?php
else {
print "A regisztráció sikeres!<br>";
print "<a href='index.php'>Kattints ide!</a>";
mysql_query("INSERT INTO login(usr, pass, email, msn, nem, szuletes) VALUES ('$_POST[username]', '$_POST[password]', '$_POST[email]', '$_POST[msn]', '$_POST[nem]', '$_POST[szuletes]')");
mysql_close($kapcsolat);
}
itt meg az a bj h akkor rá kell katintani és u megy csak tovább ja és uan ez lenne jó loginál is.
próbtam ezt: header("location: izibizs.php");
de ez sajna nem jó szal ilyen léptető kéne pl. if köé is jó lenne

Anubisss
9

<Nincs cím>

Anubisss · 2005. Okt. 9. (V), 20.52
ja és ez hülye kérdés de mire jó az isset?
10

Leírás

attlad · 2005. Okt. 9. (V), 22.12
PHP-nak van párszáz függvénye (parancsa) mint pl. az isset is, nem érdemes mindet végigkézdezni itt egyenként, mert az sok idő. Szóval a legegyszerűbb, ha beírod a böngészőbe címsorába, hogy php.net/ és utána azt a parancsot, amire kíváncsi vagy, hogy mit csinál vagy mire jó és rögtön megtudod. Ezesetben ezt kell beírnod: php.net/isset

Attila
11

<Nincs cím>

Anonymous · 2005. Okt. 10. (H), 20.58
olvastam a hozzászólásokat, és írtátok, hogy érdemes kicsit kigyomlálni a tag-eket a lekérdezés előtt a mysql_real_escape_string() fv-nyel. Nos, gondoltam és is, hogy ez már én is kipróbálom. Igaz, nekem máshogy működött a beléptető oldalam, de én is be tudtam lépni jelszó nélkül. Miért is? Mert amikor megadsz egy felh. nevet, és nem talál ilyet, és azt mondja, hogy ha az elküldött_pass==lekérdezett_pass , akkor a nem létező felh.névhez tartozó pass üressztring, és ha nem írsz be jelszót, akkor bizony azok egyenlők lesznek (logikusan), és már bent is vagy. Szóval érdemes leellenőrizni, hogy AND lekerdezett_pass>!=' '. Lehet, hogy csak én nem vettem észre, de ki tudja, teljesen véletlenül jöttem én is rá. Ezért célszerű mindig egy lúzerrel teszteltetni :) Remélem van, akinek segítettem.
12

<Nincs cím>

Anubisss · 2005. Okt. 11. (K), 06.53
:)
Nos akkor már továbbra is az a kérdésem h:
ha egy if igaz akkor a header('location: inde.php') mér nem jó?

és olyat h tok h ha egy if igaz akkor irodjon ki h Ok de viszont a többi más ami van a képernyön pl. regisztrációs ürlap az meg tűnjön el.?

és még az h pl. kiiródik h ok akkor utánna várjon 5mp-t és menyen egy meghatározott oldalra.?
13

<Nincs cím>

Anonymous · 2005. Okt. 11. (K), 10.26
Lehet, hogy a fejléc már el lett küldve, nem, és ezért a Location már nem fog működni. A header-nek mindenféle html kimenet előtt kell lefutnia!
Másodszor. Ha OK, akkor miért írja ki, miért nem irányítod egyből tovább? Rá fogsz jönni, hogy egy idő után nagyon unalmas, és felesleges lesz.
Amúgy én ezt így oldottam meg:

echo '<meta http-equiv="REFRESH" content="5;url=az_atiranyitott_utvonal">';

és akkor 5 mp után küldi is tovább. Persze js-ben lehet ezredmp-kre is beállítani, de talán nem kell olyan pontosan neked :)
Természetesen ezt a 'OK' üzenetet kiíró php kód után tedd be.
14

<Nincs cím>

Anubisss · 2005. Okt. 11. (K), 19.35
oksi kössz

ez cxsak egy pl. volt nem azért kell h kiirja h ok hanem pl. azért h mikor elkészül egy felhaszn monjuk akkor kiirja h felhaszn: tomi
jelszó: 1245cd1
szal meg hasonlókért
télleg ben vann már a header egyszer mert az index.php-t a login.php-ra irányitja
na akkor mind1 majd még ezt vh megoldom
15

count (*)

Anonymous · 2005. Okt. 12. (Sze), 08.38
Én count típusú SQl lekérdezést használok, szerintetek ez nem egyszerübb? Ha egy user van, akkor beléphet, ha más érték, akkor nem. Az ellenőrzést meg egyszerűen a WHERE ... részben elvégzem. Ha belépett, akkor a $_POST['..'] adatokat fel tudom töleni $_SESSION-ba is... Ez nem jó?
16

SESSION?

Anonymous · 2005. Okt. 13. (Cs), 08.24
most h itt olvasom én is a hozzászólásokat az szép és jó.
csak az a baj hogy én sem tudom mi az a Session.?.
gondolom arra jó ha pl. van egy index.php és a login.php val lehet bejelentkezni de ha az index.php nyomom meg egyböl akkor nincs védelem de gondolom erre az jó hogy session-ba elmenti hogy bevagye vagy nemvagy-e bejelentkezve csaqk ezt hogy mentem el sessionba?
és a SID-et hogy hozom elő???
.
17

cikk

Hojtsy Gábor · 2005. Okt. 13. (Cs), 13.51
18

<Nincs cím>

zuzda · 2005. Okt. 13. (Cs), 18.16
Végigolvastam a hozzászólásokat és elég jól leírják hogy hogy kell ilyet csinálni.
Csak annyit(és nem akarom lehúzni Anubisss-t) hogy jó pár cikk van neten ahol a regisztráció és session téma mindig előkerül, és nem olyan ördöngős.Sztem elég egyszerű.
Csak hát egy fél órát rá kell szánni hogy utánanézz.
19

<Nincs cím>

Anonymous · 2005. Okt. 14. (P), 23.54
jaja csak az abaj hogy csóri netem van.:)
20

session

Anonymous · 2005. Okt. 16. (V), 21.45
Nos ha jól sejtem akkor
1.php:
<?php
session_start();
$_SESSION["login"] ="yes";
if ($_SESSION["login"] !="yes")
print "nem gyó";
?>
<a href="/2.php?<?php echo session_id()?>">tovább</a>
2.php:
<?php
session_start();
if ($_SESSION["login"] !="yes")
print "hahaa";

?>
akkor ez csak akkor irja ki h hahaha ha az előnél nem hahavan és session_id vel megyek tovább ha nincs session_id akkkor is kirja h hahah ha pl. a yes yess?de gonolom nem?
21

<Nincs cím>

Anonymous · 2005. Okt. 18. (K), 20.15
Felh. beírja nevét jelszavát, ezt megnézed mysql-be hogy jó-e:
pl. select fnev from felhasznalok where fnev=$fnev && jelszo=password($jelszo)
(jelszot mikor regnél eltárolod illik password(mysql) függvénnyel átadni.)
Ha minden ok, akkor pl. $_SESSION["login"] ="yes";
2.php jo ugy is
22

elfelejtett jelszó

Anonymous · 2005. Okt. 18. (K), 20.26
ha password fv.-t használsz, akkor egy esetleges elfelejtett jelszó esetén mit csinálsz? Randomra generálsz egy új jelszót, és kiküldöd mailben még az újabb titkosítás elött?
23

például

Hojtsy Gábor · 2005. Okt. 18. (K), 20.38
Ez egy szokásos megoldás.
24

<Nincs cím>

Anonymous · 2005. Okt. 19. (Sze), 13.34
tudnám hogy kell jelszót generálni véletlenszerően.
meg olyat h lehet hogy mindig csak a legfelsőbb sort töltse be vagy a legalsót magyarul mindig a legújabbat?
és az hogy véletlenszerűen válasszon valamit?
25

Megvalósítás

attlad · 2005. Okt. 19. (Sze), 23.17
Viszont arra figyelni kell, hogy nem úgy kell megcsinálni, ahogy pl. itt a Weblaboron is van (?), hogy az elfelejtett jelszóra kattintva az új jelszó kapásból felülírja a régit, mert így bárki generálhat új jelszót bárki nevében ami nem túl szerencsés.

Attila
26

lehet

Hojtsy Gábor · 2005. Okt. 20. (Cs), 19.01
Valóban így van a Weblaboron, ami lehet, hogy nem túl szerencsés. Valójában akkor alkalmas támadásra, ha közben elkapod az emailjeit valakinek, vagy különben betelt a mailboxa, és nem megy el neki az új jelszó.
27

<Nincs cím>

Anonymous · 2005. Nov. 16. (Sze), 15.41
Bocs, ha nagy hülyeséget modnok, de még csak most ismerkedem az alapokkal...

Tehát Ha jól értem, akkor a beléptetéshez egy külön táblában kell gyűjteni a login neveket és jelszavakat. A kérdéseim a következők:

1. Ha azt akarom, hogy regisztrálni tudjanak bárhonnan a nagyvilágból, akkor erre a táblára bármilyen hostról, bármilyen loginra és jelszóra írási jogot kell biztosítsaka a mysql_connect paramétereiben( hiszen különben hogyan tudna bárki berögzíteni a táblába, ha nem tud csatlakozni az adatbázishoz)?

2.Beléptetéskor viszont ellenőrizni kell, hogy benne vannak-e már az akkor beírt adatok a táblában. Na mármost ha ugyanúgy mindenkinek adok olvasási jogot is, akkor egyértelmű, hogy bárki hozzáférhet a felhasználói adatokhoz.
Ha nem, akkor a regisztrált felasznélók hogyan kapnak olvasási jogot a táblához, hogy csatlakozni tudjanak hozzá? Illetve honnan tudom meg, hogy a jelszóval vagy loginnévvel van-e probléma? ( Hiszen ha bármelyik nem stimmel, nem csatlakozik a mysql-hez sem, így lekérdezés sem tud lefutni egyikre sem!?)


Az olvasottak alapján a munkamenet része már tiszta, ezt az apróságot viszont nem tudom hogyan működik a gyakorlatban...