Prog.Hu

PHP regisztráció, bejelentkezés
0

2013-09-08T21:51+02:00
hardcore
hardcoreProg.Hu
regisztrált tag
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.
Mutasd a teljes hozzászólást!
PHP regisztráció, bejelentkezés
2013-09-08T21:51+02:00
hardcore
hardcoreProg.Hu
regisztrált tag
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... :)";
}

?>
Mutasd a teljes hozzászólást!
Oszd meg másokkal is!

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


Mondjuk egy kis PHP tanulassal?
Mutasd a teljes hozzászólást!
És szerinted ha az alapokkal sincs tisztában, mire megy ezzel?
Mutasd a teljes hozzászólást!
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".
Mutasd a teljes hozzászólást!
"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.
Mutasd a teljes hozzászólást!
Minden olyan program jól használható, amelyik színkiemeléssel jeleníti meg a kódodat. Akár a Dreamweaver is.

[Ingyenesek]
Mutasd a teljes hozzászólást!
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á!
Mutasd a teljes hozzászólást!
Bármilyen szövegszerkesztő program jó. Én a Notepad++-t használom. Sok sikert!
Mutasd a teljes hozzászólást!
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");

?>
Mutasd a teljes hozzászólást!
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
Mutasd a teljes hozzászólást!
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.
Mutasd a teljes hozzászólást!
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.
Mutasd a teljes hozzászólást!

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.
Mutasd a teljes hozzászólást!
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...
Mutasd a teljes hozzászólást!
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
}
Mutasd a teljes hozzászólást!
É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);

?>
Mutasd a teljes hozzászólást!
É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;
}



}
?>
Mutasd a teljes hozzászólást!
foreach($hibauzi a $h)

helyett:


foreach($hibauzi as $h)

Mutasd a teljes hozzászólást!
nem vagyok guru, de szerintem az emailnál az !eregi rossz.

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

Mutasd a teljes hozzászólást!
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
Mutasd a teljes hozzászólást!
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.
Mutasd a teljes hozzászólást!
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;


Mutasd a teljes hozzászólást!
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ő.
Mutasd a teljes hozzászólást!
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;
}
..................
Mutasd a teljes hozzászólást!
és a break-nek mi a szerepe?
Mutasd a teljes hozzászólást!
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>
Mutasd a teljes hozzászólást!
Oszd meg másokkal is!