Prog.Hu

PHP regisztráció, bejelentkezés probléma

Keresés
Hírlevél

PHP regisztráció, bejelentkezés

2013-09-08T21:51+02:00
hardcore
hardcoreProg.Hu
regisztrált tag
nyitotta: hardcore, idő: 2008.03.21. 10:29, moderátor: moderator, megoldás elfogadva: 2008.05.06. 20:47
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben

Kategóriák:Programozási nyelvek » PHP

Sorrend:
Időzóna:
Oldalanként:
Oszd meg!
Szevasztok!
Van egy weboldalam ami egy klános (counter strike source) oldal és regisztrációt pár adat megadásával (neve, szül éve, neme, mióta játszik, elérhetőség...stb) valamint bejelentkezést emailcím és jelszó megadásával (jelszó 2x elfelejtett jelszó is szerepeljen benne természetesen) szeretnék létrehozni. Eddig van 7 sql tábla kapcsolatokkal amiben a fenti adatok szerepelnek, csak sajnos a php-hez nem értek és fogalmam sincs hogy kéne belekezdeni. Az oldal az extra.hu-n van fent, amiben hát sztem jobban is megoldhatták volna az sql részt.
kicsit átírtam.

<?php
session_start(); //előzőleg lemaradt!
include "config.php";

mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

/**************************************************
* Ha még nem lépett be
***************************************************/

if ($_SESSION['belepett']== false)
{

if ($_POST['login'] AND addslashes($_POST['jelszo']) AND addslashes($_POST['nev']) )
{ //Ha postolt adatokat
$nick = addslashes($_POST['nev']);
$pass = md5($_POST['jelszo']);

$sql = "SELECT * FROM users WHERE nick='".$nick."' AND jelszo='".$pass."' LIMIT 0,1";

$query = mysql_query($sql);

if (mysql_num_rows($query) == 1)
{ //Helyes nick+pass
$_SESSION['nick'] = addslashes($_POST['nev']);
$_SESSION['belepett'] = true;

header("Location: ".$_SERVER['PHP_SELF']);
}

else
{//Hibás nick+pass
print "hibás nick/pass";
}


}//Postolás ellenőrzése



print '<form action="?" method="post">
<table>
<tr>
<td>nick:</td>
<td><input type="text" name="nev"></td>
<td>jelszó:</td>
<td><input type="password" name="jelszo"></td>
<td colspan="2" align="center"><input type="submit" name="login" value="Belépés"></td>
<td><a href="register.php">regisztráció</a></td>
</tr>
</table>
</form>';

}//Nem lépett be
else
{
//Be van lépve
/********************************
* Ha már belépett
*******************************/


print "bejelentkezve: ".$_SESSION['nick'];
print " <a href=\"logout.php\">kijelentkezés</a>";
}
?>

Itt van, az én esetemben ugye a nick az nev a user tábla pedig jatekosadat, átírkáltam ezeket de amikor rányomok a belépésre 404-et ír ki. A másik dolog hogy ugye a reg azért kell mert az oldalon 2 lap védett lesz amit vagy rosszul másoltam be vagy a php rossz:


<?php
session_start();

if($_SESSION['belepett'] == true)
{
print "Védett tartalom, ha ezt olvasod, sikerült belépned, gratulálok";
}
else
{
print "Csak szeretnéd... :)";
}

?> előzmény

...csak sajnos a php-hez nem értek és fogalmam sincs hogy kéne belekezdeni


Mondjuk egy kis PHP tanulassal? előzmény
[Kezdetnek]

[..és tovább] előzmény
És szerinted ha az alapokkal sincs tisztában, mire megy ezzel? előzmény
PHP-t még életemben nem használtam (na jó, egyszer), de annyi segédlet van fenn a neten, hogy kis olvasgatással elindulhat a megvalósítás felé. Általában ha megszorulok valamiben utánnanézek, olvasgatok. Nyílván, ha nincs tisztában az alapokkal, akkor elmagyarázni nehezebb neki, minthogy saját maga rájöjjön dolgokra, és utánna konkrét kérdéseket tegyen fel.

Magyar nyelven is találni:
[php-script.hu]/keresés/(login a php-scriptekben)

...fogalmam sincs hogy kéne belekezdeni


Ehhez adtam a "segítséget". előzmény
"Mondjuk egy kis PHP tanulassal?" Jó igen tudom, csak magam ismerve úgy szoktam és úgy is szeretek akármit csinálni hogy belevágok a közepébe. Ha elkezdek olvasgatni az általában csak mégjobban összezavar, viszont ha csinálom és úgy oldom meg a problémákat sokkal hamarabb megtanulom hogy is kell.
Köszi a linkeket segítséget nekem is vannak ilyen segítségeim, kezdésnek jók lesznek, el tudok indulni, megcsinálgatni a php-kat gondolok itt a config.php, login.php, register.php-ra stb csak 1 kérdés még mindig nem tisztázódott bennem talán azért mert rosszul fogalmaztam.
Tehát: milyen progit javasoltok a megírásra? Pl dreamweaver jó? mert az extra.hu-n is van valamiféle php írási lehetőség ha jól láttam. előzmény
Minden olyan program jól használható, amelyik színkiemeléssel jeleníti meg a kódodat. Akár a Dreamweaver is.

[Ingyenesek] előzmény
Notepad tökéletesen megteszi.
Kezdetnek nem árt a php 24 óra alatt című e-book-ot átolvasni.
Találsz esetleg kész szkripteket is ami használható, de ha foglalkozol a php val, egy idő után rájössz hogy a saját gyerek az igazi. Döntsd el hogy programozni akarsz tanulni, vagy csak akarsz egy logint a honlapodra. Ha logint akarsz, akkor google. Találsz egy csomó könnyen beépíthető szkriptet. Hajrá! előzmény
Klikk! előzmény
Bármilyen szövegszerkesztő program jó. Én a Notepad++-t használom. Sok sikert! előzmény
dreamweaver talán a jobbik megoldás a megírására, mert útközben ha html kódokat kéne kiiratnod php ben, előtte dreamwaverben megcsinálod html ként, és php ként meg kiirathatod. Pl egy űrlap....Aztán az űrlap feldolgozó php program megírása igy könnyű DW ben, mert sok parancshoz beépített kis segítésget is találsz. Csak akkor írd be felhasználót a táblába, hogyha hosszabb a felhasznállónév mint 4 karakter, nincs benne speciális karakter, csak abc.

Phpvel kiirva a regelős űrlap:

<?
print '<form name="form2" method="post" action="?"><table border="1"><tr><td>felhasznalonev</td><td>jelszo</td><td>jelszo2</td><td>emailcim</td></tr><tr><td><input type="text" name="felhasznalonev"></td><td><input type="text" name="jelszo"></td><td><input type="text" name="jelszo2"></td><td><input type="text" name="emailcim"></td></tr></table> <input name="table2" type="hidden" id="table" value="userek"> <br> <input type="submit" name="Submit2" value="Submit"> </form>
';


Aztán jöhet az értékek beírása az adatbázisba:
<? if($felhasznalonev!="" AND $jelszo!="" AND $jelszo==$jelszo2=="" AND $emailcim!="")
{
$tombfelhasznalonev=trim($_POST["felhasznalonev"]);
$tombjelszo=trim($_POST["jelszo"]);
$tombemailcim=trim($_POST["emailcim"]);

include("kapcsolodas.php");

$parancs="INSERT INTO userek (felhasznalonev, jelszo, emailcim) VALUES
('$tombfelhasznalonev', '".md5($tombjelszo)."', '$tombemailcim')";
$eredmeny=mysql_query($parancs,$kapcsolat);
if ($eredmeny)
print "Sikeresen beírtam a táblába. SQL:".$parancs;

}
?>

Az SQl táblád meg a következő SQL paranccsal hozható létre:
CREATE TABLE `userek` (
userek_id int(11) NOT NULL auto_increment,
`felhasznalonev` VARCHAR( 50 ) NOT NULL ,
`jelszo` VARCHAR( 50 ) NOT NULL ,
`emailcim` VARCHAR( 255 ) NOT NULL
,PRIMARY KEY (userek_id)) ;




Amikor beléptetet az usert, amit az űrlapba beír jelszót, md5($jelszo) módon kell majd lekérned a felhasználónévvel együtt.

Kiteszem a zűrlapot, amibe várok egy usernevet és jelszót. Ha van az adatbázisban, beteszem egy SESSION változóba a jelszót és usernevet.

Ez a head rész elő kell hogy kerüljön
<?
session_start();
?>


<form name="form2" method="post" action="?"><table border="1"><tr><td>felhasznalonev</td><td>jelszo</td></tr><tr><td><input type="text" name="felhasznalonev"></td><td><input type="text" name="jelszo"></td></tr></table> <input name="table2" type="hidden" id="table" value="userek_belepese"> <br> <input type="submit" name="Submit2" value="Submit"> </form>
<br>
<?
if($_POST["felhasznalonev"]!="" AND $_POST["jelszo"]!="" AND $_POST["table2"]=="userek_belepese")
{
$tombfelhasznalonev=trim($_POST["felhasznalonev"]);
$tombjelszo=md5(trim($_POST["jelszo"]));

include("kapcsolodas.php");

$parancs="$parancs=" SELECT * FROM userek WHERE felhasznalonev='".$tombfelhasznalonev."' AND jelszo='".$tombjelszo."' LIMIT 1";

$eredmeny=mysql_query($parancs,$kapcsolat);
$sorok_szama = mysql_num_rows( $eredmeny );

if ($sorok_szama==1)
{
$belepett=1;
session_register("belepett");
session_register("tombfelhasznalonev");
session_register("tombjelszo");

}

}
?>

aztán azokra a lapokra, ahova beléptetést akarsz tenni, ezt tedd:

<?
session_start();
if ($_SESSION["belepett"]=="" OR $_SESSION["tombfelhasznalonev"]=="" OR $_SESSION["tombjelszo"]=="" )
header("Location: belepes.php");

?> előzmény
a "php 24 óra alatt" book az alap ha vki php vel akar foglalkozni
szerkesztőnek sztem a dreamweaver a legjobb, mert minden létező dologhoz ad vmi plusszt, amit csak weblapza pakolhatsz, készíthetsz kódmintákat amit akármikor előhívhatsz, stb
kedvencem a kódrészlet egyéni színezése, és az se rossz, amikor a mentés gombal egyből fel is tölti a szerverre az oldalt előzmény
Uh hát djjjozsi ez nekem elég bonyolultnak tűnik így első ránézésre :D A web már kész, csak a reget kell belerakni. Volt egy scriptes megoldás egy egyszerű kis regisztrációval, létrehozogattam a php-kat de úgy nem volt jó mivel volt index.php is és állandóan azt hozta be. Így gondolom hogy a már kész html-ekbe kell a php kódokat beírogatnom, de azt hiszem hogy ma este még próbálkozok aztán ha nem jutok sokra holnap nekikezdek a 24 órás php-nak. előzmény
Szia!

Volt egy scriptes megoldás egy egyszerű kis regisztrációval, létrehozogattam a php-kat de úgy nem volt jó mivel volt index.php is és állandóan azt hozta be.


Ezen már el lehetne indulni, ha írnál kódot valószínüleg lenne aki segítsen.

Ha nem akarsz hosszabb távon ezzel foglalkozni, szerintem annyira nem egyszerű hogy csak ezért megtanuld ilyen szinten a php-t, persze nem akarlak lebeszélni.
előzmény

if ($sorok_szama==1)
{
$belepett=1;
session_register("belepett");
session_register("tombfelhasznalonev");
session_register("tombjelszo");

}

}
?>

aztán azokra a lapokra, ahova beléptetést akarsz tenni, ezt tedd:

<?
session_start();
if ($_SESSION["belepett"]=="" OR $_SESSION["tombfelhasznalonev"]=="" OR $_SESSION["tombjelszo"]=="" )
header("Location: belepes.php");

?>


Javaslom olvasd át ezt:
http://hu.php.net/manual/en/function.session-register.php

szerk: bocsi ahogyan nézem a kódodat lehet hogy inkább a php 24 -et lenne érdemes átnézni. előzmény
Nekem lefut. előzmény
Na úgy néz ki kezdek rájönni a lényegére viszont ellenőrzésnél beírom az email címet jól és mindig azt írja ki h hibás email cím.

<?php
function reg_check($adatok){
if($adatok['nev'] == "" | $adatok['email_cim'] == "" | $adatok['pass1'] == "")
{
return "Minden mező kitöltése kötelező";
break;
}
elseif(!ereg('^[a-zA-Z\-\_áéíóöüóűÁÉÍÓÖÜŐŰ]+$', $adatok['nev' ]))
{
return "A nickben csak a magyar ábécé kis - és nagybetűi, a számok, illetve a _ és - jelek engedélyezettek";
break;
}
elseif($adatok['email_cim'] == (!eregi("^[_\.0-9a-z-]+@
([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$adatok['email_cim'])))
{
return "Hibás e - mail cím!";
break;
}
elseif(mysql_num_rows(mysql_query("SELECT nev FROM hchardcore WHERE (nev='".$adatok['nev']."')")) > 0)
{
return "Már regisztráltak ezzel a nickkel";
break;
}
elseif($adatok['pass1'] !== $adatok['pass2'])
{
return "A két jelszó nem egyezik";
break;
}
else
{
return "rendben";
}
}
?>

Itt a kód. Mi lehet a baj?

SadButTrue amúgy sztem is igazad van... előzmény
Szia!

próbáld meg ezt:


if(empty($adatok['email_cim']) || !eregi("^[A-za-z0-9\_\.-]+@[A-za-z0-9\_\.-]+.[A-za-z0-9\_-]+.*", $adatok['email_cim'])) {

//nem jó az email cím
}
előzmény
Én nem értek reguláris kifejezésül sajnos ,
de ha más nem megy, használd ezt.


<?php
function reg_check($adatok){
if($adatok['nev'] == "" | $adatok['email_cim'] == "" | $adatok['pass1'] == "")
{
return "Minden mező kitöltése kötelező";
break;
}
elseif(!ereg('^[a-zA-Z\-\_áéíóöüóűÁÉÍÓÖÜŐŰ]+$', $adatok['nev' ]))
{
return "A nickben csak a magyar ábécé kis - és nagybetűi, a számok, illetve a _ és - jelek engedélyezettek";
break;
}
elseif( !strstr($adatok['email_cim'], "@") || !strstr($adatok['email_cim'], ".") )
{
return "Hibás e - mail cím! " . $adatok['email_cim'];
break;
}

elseif(mysql_num_rows(mysql_query("SELECT nev FROM hchardcore WHERE (nev='".$adatok['nev']."')")) > 0)
{
return "Már regisztráltak ezzel a nickkel";
break;
}

elseif($adatok['pass1'] !== $adatok['pass2'])
{
return "A két jelszó nem egyezik";
break;
}
else
{
return "rendben";
}
}


$adatok["email_cim"]="aaa@alter.hu";
$adatok['nev']="kataklara";
$adatok['pass1']="1212";
$adatok['pass2']="1212";

print reg_check($adatok);

?> előzmény
Égy kicsit másként (nem teszteltem le)



<?php
function reg_check($adatok){

$hibauzi=array();

if( strlen(trim($adatok['nev']))==0 || strlen(trim($adatok['email_cim']))==0 || strlen(trim($adatok['pass1']))==0 ){
$hibauzi[]= "Minden mező kitöltése kötelező";
}





if( empty($adatok['email_cim']) || !eregi("^[A-za-z0-9\_\.-]+@[A-za-z0-9\_\.-]+.[A-za-z0-9\_-]+.*", $adatok['email_cim']) ){
$hibauzi[]= "Hibás e - mail cím!";
}


if(!ereg('^[a-zA-Z\-\_áéíóöüóűÁÉÍÓÖÜŐŰ]+$', $adatok['nev' ]))
{

$hibauzi[]= "A nickben csak a magyar ábécé kis - és nagybetűi, a számok, illetve a _ és - jelek engedélyezettek";
}


if(mysql_num_rows(mysql_query("SELECT nev FROM hchardcore WHERE (nev='".$adatok['nev']."')")) > 0)
{
$hibauzi[]= "Már regisztráltak ezzel a nickkel";
}

if($adatok['pass1'] !== $adatok['pass2'])
{

$hibauzi[]= "A két jelszó nem egyezik";
}

if(count($hibauzi)==0)return "Rendben";
else{
$str="";

foreach($hibauzi a $h){

$str.='-'.$h.'<br />';

}

return $str;
}



}
?>
előzmény
foreach($hibauzi a $h)

helyett:


foreach($hibauzi as $h)

előzmény
nem vagyok guru, de szerintem az emailnál az !eregi rossz.

inkább akkor megoldom egy explode és strstr fügvényekkel.

előzmény
Olvasd át ezt, és ezt is! előzmény
Sajna ezt nem tudta senki sem megmagyarázni, úgyhogy írtam magamnak saját reguláris minta felismerést. (nem olyan okos, de legalább értem mit csinálok benne).

Ebből nincs magyar leírás esetleg?

Amúgy meg érdemes lenne tesztelni a dolgokat,amielőtt postolod nékünk, mert így hibát terjeszthesz, és az not good előzmény
Próbáld ki az előző logikát ezzel, és hibás lesz a REGEXPR-ed bírálata.

<?
$adatok['email_cim']="aaa@aa|TRUNCATE users|DELETE FROM userars WHERE 1|#a.hu";
if( !eregi("^[A-za-z0-9\_\.-]+@[A-za-z0-9\_\.-]+.[A-za-z0-9\_-]+.*", $adatok['email_cim']) )
{
print "Hibás e - mail cím!";
}


?>

és ha ezt elfogadja, gondolom nem kell magyarázni még mit lehet vele elérni. előzmény
Ha jobban bele akarsz mélyedni érdemes némi angol tudásra szert tenni, egyébként én "csak" nem teszteteltem de te alapból írtál hülyeségeket, ha átnézed a kódodat ....
HOgy ki terjeszt hibát azt mutatja pl ez:


return "Minden mező kitöltése kötelező";
break;


előzmény
Nos.

amit "toldoztál" kódot, nem én adtam a kérdezőnek,

innen töltötte le:
http://www.segedletek.hu/segedletek/php/php_p_mysql_alapu_belepteto_rendszer.html

amit innen bekopizott, nem működik.

és egy a baj, hogy nem műküdik :) amit meg írtál hozzá, azokkal a módosításokkal sem működik, sőt biztonsági rést is okoz.

és most mát engem is érdekelne egy jó emailcím ellenőrző. előzmény
amúgy ez egy function visszatérési értéke, szóval lehet használni return -ot...


.....
function reg_check($adatok){ <------------ Ő az
if($adatok['nev'] == "" | $adatok['email_cim'] == "" | $adatok['pass1'] == "")
{
return "Minden mező kitöltése kötelező";
break;
}
.................. előzmény
és a break-nek mi a szerepe? előzmény
Ha átolvastad volna a linkeket amit küldtem máris szert tehettél volna egy jó email cím ellenőrzőre.

A topic nyitónak: itt a teljes kód amivel _teszteltem és működik_ a program:



<?




function reg_check($adatok){

$hibauzi=array();

if( strlen(trim($adatok['nev']))==0 || strlen(trim($adatok['email_cim']))==0 ||
strlen(trim($adatok['pass1']))==0 ){
$hibauzi[]= "Minden mez\u0151 kitöltése kötelez\u0151";
}





if( empty($adatok['email_cim'])
|| !eregi("[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}",
$adatok['email_cim'])
)
{
$hibauzi[]= "Hibás e - mail cím!";
}


if(!ereg('^[a-zA-Z\-\_áéíóöüó\u0171ÁÉÍÓÖÜ\u0150\u0170]+$', $adatok['nev' ]))
{

$hibauzi[]= "A nickben csak a magyar ábécé kis - és nagybet\u0171i, a számok, illetve a _ és - jelek engedélyezettek";
}


/*********************************
if(mysql_num_rows(mysql_query("SELECT nev FROM hchardcore
WHERE nev='".$adatok['nev']."'")) > 0)
{
$hibauzi[]= "Már regisztráltak ezzel a nickkel";
}

EZT magad ellenőrizd! Nem hoztam létre táblát.

**********************************/


if($adatok['pass1'] !== $adatok['pass2'])
{

$hibauzi[]= "A két jelszó nem egyezik";
}

if(count($hibauzi)==0)return "OK";
else{
$str="";

foreach($hibauzi as $h){

$str.='-'.$h.'<br />';

}

return $str;
}



}

$adatok=array();
$adatok['nev']=$_POST["nev"];
$adatok['email_cim']=$_POST["email_cim"];
$adatok['pass1']=$_POST["pass1"];
$adatok['pass2']=$_POST["pass2"];

if($_POST["nev"]){
echo  reg_check($adatok);
}




?>
<form action="" method=POST>

Név:<input type=text name=nev value="<?=$_POST["nev"]?>">
<br />

Email: <input type=text name=email_cim  value="<?=$_POST["email_cim"]?>">
<br />

Jelszó1: <input type=password name=pass1  value="<?=$_POST["pass1"]?>">
<br />

Jelszó2: <input type=password name=pass2  value="<?=$_POST["pass2"]?>">
<br />
<input type=submit>

</form>
előzmény
Oszd meg másokkal is!