Segédletek.hu

Segédletek weblap szerkesztéshez!
ingyen letöltés

| Mind | PHP | HTML | CSS | Java |
|Legújabbak |Legtöbbször olvasottak|

php + mysql alapú beléptető rendszer:

Írunk egy beléptető rendszert, melynek segítségével megoldható, hogy bizonyos lapok csak regisztrált felhasználóknak legyenek elérhetők.

A segédletben nem fogok mindent annyira részletesen magyarázni, inkább haladóknak szánom, de ne essen senki kétségbe, nem lesz túl bonyolult.
A segédlet megértéséhez nem árt tisztában lenni a session kezelés alapjaival

A segédletben felhasznált fájlok:

install.sql - Az adatbázist létrehozó fájl.
config.php - A beállításokat tartalmazó fájl
index.php - A nyitó oldal
login.php - A bejelentkező lap
register.php - A regisztrációs lap
vedett.php - A rejtett(csak regisztráltaknak elérhető) oldal.
reg_check.php - A regisztrációs adatok helyességét ellenőrzi

Működő demó
Forrás fájlok egyben

Akkor vágjunk is bele.

Először az adatbázist kell megterveznünk.
mindössze egy táblára lesz szükségünk. Legyen a neve users. Kell benne egy azonosító(id), egy nick, egy jelszó, és egy e-mail cím mező. ez SQL nyelven így néz ki:

install.sql
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nick VARCHAR(30),
jelszo VARCHAR(32),
email VARCHAR(60)
);
Ezt futtassuk le mondjuk phpmyadmin - ban, vagy akár hol, és már kész is van az adatbázisunk.

Akkor jöjjön a config.php Ezt fogjuk majd includolni a többi lapba

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "login";
?>

Itt definiáltuk a csatlakozáshoz szükséges adatokat, természetesen mindenki a saját adatait írja ide.
Van adatbázisunk, van config fájlunk, írjuk meg a regisztrációs részt.

register.php

<html>
<head>
  <title>Regisztráció</title>
</head>

<body>

Regisztráció:
<form method="post" action="">
  <table>
    <tr>
      <td>Nick:</td>
      <td><input type="text" name="nick" /></td>
    </tr>
    <tr>
      <td>E-mail cím:</td>
      <td><input type="text" name="email" /></td>
    </tr>
    <tr>
      <td>Jelszó:</td>
      <td><input type="password" name="pass1" /></td>
    </tr>
    <tr>
      <td>Jelszó mégegyszer:</td>
      <td><input type="password" name="pass2" /></td>
    </tr>
    <tr>
      <td colspan="2"><input type="submit" name="regisztracio" value="regisztrálok" />
      </td>
    </tr>
  </table>
</form>

Ezzel létrehoztunk egy formot, amin keresztül a felhasználó beírhatja az adatait. Már csak a letároló részt kell megírnunk bele. Akkor folytassuk:
Itt állnék meg egy szóra. Minden olyan adat, ami a felhasználótól érkezik, potenciális veszélyforrás, ugyanis nagyon sok a rosszindulatu user. Ezért minden formból jövő adatot ellenőrizni kell. Amit mi most ellenőrizni forunk, azok a következők:

-az összes mezőt kitöltötték - e
-a nickben csak a magyar ábécé betűi, számok, _ és - vannak - e
-valós e-mail címet adtak - e meg
-regisztráltak - e már a megadott nickkel
-a két jelszó egyezik - e

ez php nyelven így néz ki:

reg_check.php
<?php
function reg_check($adatok){
  if($adatok['nick'] == "" | $adatok['email'] == "" | $adatok['pass1'] == "")
  {
    return "Minden mező kitöltése kötelező";
        break;
  }
  elseif(!ereg('^[a-zA-Z\-\_áéíóöüóűÁÉÍÓÖÜŐŰ]+$', $adatok['nick' ]))
  {
    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'] == (!eregi("^[_\.0-9a-z-]+@
([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$"
,$adatok['email'])))
  {
    return "Hibás e - mail cím!";
        break;
  }
  elseif(mysql_num_rows(mysql_query("SELECT nick FROM users WHERE (nick='".$adatok['nick']."')")) > 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";
  }
}
?>

Ez egy függvény, kér egy tömböt, ami a mi esetünkben majd a $_POST tömb lesz (ebben lesznek a megadott adatok) és visszatér vagy a hibaüzenettel, vagy a rendben szóval.
Akkor jöjjön, aminek jönnie kell, a formból bekért adatokat ellenőrzés után írjuk mysql - be
folytassunk a register.php - t

<?php
include "config.php";
include "reg_check.php";
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

if (isset($_POST['regisztracio']))
{
  if (reg_check($_POST) == "rendben")
  {
    $sql = "INSERT INTO users (id,nick,jelszo,email) ";
    $sql.= "VALUES('','".$_POST['nick']."','";
    $sql.= md5($_POST['pass1'])."','".$_POST['email']."')";
    $query = mysql_query($sql) or die ("Valami baj van az adatbázissal.");
    print "sikeres regisztráció!";
          print "<a href=\"index.php\">tovább</a>";
  }
  else
  {
    print reg_check($_POST);
  }
}
?>
</body>
</html>
beincludoltuk a két fájlt, csatlakoztunk a mysql - hez. Ezután az előbb megírt függvényünket használjuk a regisztráció ellenőrzésére. ha a "rendben" - el tér vissza, akkor beíratjuk az adatokat az adatbázisba. Ami feltűnő lehet, az az md5() függvény. Ezzel csináltunk egy hash értéket a jelszóból. Így egy kicsit biztonságosabbá tettünk az adatokat, mert ha netalántán illetéktelen kezekbe kerülnének az adatok, akkor az illető csak egy hash értéket lát, ami nem mond sokat. Ez is egy alapszabály: adatbázisban tilos közvetlenül tárolni a jelszavakat.

Most, hogy már regisztrálni is tudnak a felhasználóink, valahol be kéne őket léptetni. Hát akkor feküdjünk neki a login.php - nek.

<?php
include "config.php";

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

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


if ($_SESSION['belepett']!== true)
{
  if (isset($_POST['login']))
  { //Ha postolt adatokat
    $nick = addslashes($_POST['nev']);
    $pass = md5($_POST['jelszo']);

    $sql = "SELECT * FROM users ";
    $sql.= "WHERE (nick='".$nick."'";
    $sql.= " AND jelszo='".$pass."')";

    $query = mysql_query($sql);

    if (mysql_num_rows($query) !== 0)
    { //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";
    }
  }
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" 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>
<?php
}//Nem lépett be

/********************************
 * Ha már belépett
 *******************************/

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

Ezzel kiíratunk egy belépő formot, és egy linket a regisztrációra. Ha postolnak, akkor ellenőrizzük az adatokat, és ha passzol minden, akkor a $_SESSION['nick'] változóba tesszük a felhasználó nevét, és a $_SESSION['belepett'] értékét true - ra állítjuk.
Ez szép, és jó, de önmagában semmit nem ér.
Csináljunk egy lapot:

index.php
<?php
session_start();
ob_start();
?>
<html>
<head>
  <title>Belépő rendszer</title>
</head>
<body>
  <?php include "login.php"; ?>
  <p>Ez itt a mindenki számára elérhető rész </p>
  <a href="vedett.php">Védett rész</a>
</body>
</html>
<?php
ob_end_flush();
?>

Remélem, ez nem szorul különösebb magyarázatra. Ami feltűnő lehet, az az ob_start, valamint a ob_end_flush sorok. Ez a header() fgv miatt van, ami a login.php - ben van.
Most, hogy be tudnak lépni felhasználóink, ki is kéne tudni őket léptetni.
logout.php
<?php
session_start();
unset($_SESSION['belepett']);
unset($_SESSION['nick']);
header("location: index.php");
?>

gyakorlatilag a kiléptetés azt jelenti, hogy töröljük a session változókat.

És akkor most a végén jöjjön a leg fontosabb dolog. Hozzunk létre védett tartalmat, amit csak regisztrált felhasználóink olvashatnak
vedett.php
<?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... :)";
}

?>

Vizsgáljuk a $_SESSION['belepett'] értékét (a bejelentkezéskor állítottuk true - re).
Ezzel gyakorlatilag el is készültünk. Minden védett lapunk elejére be kell illeszteni a login.php -t (include "login.php";). a session_start - ról se feledkezzünk meg.

Hát ennyi volt, ugye, hogy nem is olyan bonyolult :)

A segédletben felhasznált php függvények:

ereg()
mysql_num_rows()
mysql_query()
include()
mysql_connect()
mysql_select_db()
isset()
die()
md5()
header()
session_start()
ob_start()
ob_end_flush()
unset()

Írta: requiem - 2006-07-06 19:11:38

* Nem vagy bejelentkezve!
* Nem töltheted le a segédlet forrását egyben!
* Nem szavazhatsz a segédletre!
* Nem írhatsz a segédlethez tartozó fórum témába!


gaborka 2010-05-28 01:34:09
Ezeket a kódokat egy notepadba kell másolni és feltölteni a tárhelyre így ahogy vannak?? Illetve itt arró hogy hogyan kell létrehozni a kapcsolatot a mysql adatbázissal nem sok van írva. :(
gaborka 2010-05-27 20:03:00
Nem rossz írás. De. Sajnos nagyon fontos dolgok maradtak ki, például, hogy ezeket a forráskódokat hová kell elhelyezni. Register.php még önmagában meg sem jelenik index.html nélkül. Szóval ez úgy lett volna jó ha minden lépésr?l lépésre pontosan le van írva,esetleg videóval mellékelve. Az index.html létrehozása, a regisztrációs oldal létrehozása, aztán a login elhelyezése az index.html-en, mysql adatbázis részletezése, kezdeti teend?kkel. Mert ilyen amat?r kezd? programozóknak, mint én is vagyok ez túl bonyolult aki meg tudja annak nem túl hasznos ez az írás. De ne vegyétek ezt a kommentet rossznéven. :)
bazsi 2010-05-17 18:25:09
Nekem is hasonló problémám van mint ogrepapa-nak. Ezt írja ki csak más az elérési útvonal, de ugyen ez a problémám
Warning: Cannot modify header information - headers already sent by (output started at /mnt/storage/virtual/temuki.hu/projekt/htdocs/index.php:3) in /mnt/storage/virtual/temuki.hu/projekt/htdocs/login.php on line 29

Valaki segítsen pls!!!!!!!!
Köszike
ogrepapa 2010-05-12 05:34:11
body részben kell legyen a include login.php
ogrepapa 2010-05-12 05:32:54
Ez lemaradt bocsi

(innen html)


(innen megint html)
ogrepapa 2010-05-12 05:30:46
így kezd?dik a php oldalad:
session_start();
ob_start();
?>
(innen html)


(innen megint html)
.
.
.
és bezárod így


ob_end_flush();
?>

a védett oldaad meg ilyen:
session_start();

if($_SESSION['belepett'] == true)
{
include "valami.html";
}
else
{
print "Csak regisztráltaknak";
}

?>

remélem segítettem
emilio 2010-05-07 10:24:31
Sziasztok!

Akinek a $_SESSION re hibát írt és sikerült megoldania, kérem írja le mit kell tenni.
Ha a forráskód írójának van ötlete azt is szívesen veszem.
ogrepapa 2010-05-05 09:08:01
megoldódott a probléma
ogrepapa 2010-05-05 08:31:29
Sziasztok!
ezt a hibát írja kia az oldalam amikor be akarok lépni:
Warning: Cannot modify header information - headers already sent by (output started at /mnt/storage/virtual/temuki.hu/projekt/htdocs/index.php:3) in /mnt/storage/virtual/temuki.hu/projekt/htdocs/login.php on line 29
nem értem mi lehet a baja
Kérek kis segítséget!
El?re is köszi
pelyi 2010-02-10 21:35:34
Ha valaki olyan olvassa aki bele tud szerkeszteni:
elseif(!ereg('^[a-zA-Z-_áéíóöüó?ÁÉÍÓÖÜ??]+$', $adatok['nick' ])) helyett:
elseif(!ereg('^[0-9a-zA-Z-_áéíóöüó?ÁÉÍÓÖÜ??]+$', $adatok['nick' ])) a reg_check.php-ben
így már tényleg engedi a számok használatát a nickben.
Ha volt már, vagy ha én voltam a hülye, akkor bocsi, de nekem csak így engedi a számot is.
Amúgy nagyon jó, egyszer? script, szépen lassan sikerült átlátnom,
kungzi 2009-11-21 10:59:11
ok sikerült megoldani
kungzi 2009-11-20 21:59:21
sziasztok, nekem annyi gondom lenne ezzel, hogy nekem nem akarja a regisztrált felhasználókat betenni a táblába, mindent úgy csináltam.
regisztrációnál kiírja, hogy a regisztráció sikeres volt, de nem rakja be a regisztrált felhasználó adatait a táblába.

mi lehet a gond?
semmi hibát nem ír ki egyébként
biomage 2009-09-11 21:06:08
A kövit csináltam
A login.php ba irtam egy
setcookie("login","done",time()+3600);
és az admin.php ba meg ezt irtam

és a logout.php ba meg
setcookie("login","done",time()-3600);
ilyen 1xü volt
biomage 2009-09-11 19:33:00
Már nem fontos, megcsináltam :)
biomage 2009-09-10 23:15:59
Hali

Elnézést a késésért :S
annyi dolgom volt, akkor hogy megfeledkeztem err?l a problémára dj400.
5x elolvastam amit írtál, és nem tudok kiigazodni rajta elnézést.
Leírnád részletesebben?
De el?tte leíróm még1x mit szeretnék.
Van egy ADMIN.PHPm ami tartalmaz olyan lehet?ségeket amivel mysql értéket lehet módosítani, és ez lenne a probléma, nem tudom hogy egyesítsem a te bejelentkez? és regizö részedet az admin phpval, úgy hogy csak az tudja elindítani aki bejelentkezett.
Azt megtudtam csinálni hogy aki bejelentkezik, annak megjelenik egy link az Admin PHP-hoz, így elérheti az admin.phpt, de ez nekem nem jó, mert maga az admin.phpt bárki eltudja indítani, ha megtudja a fájl nevet.

Szittja 2009-09-03 23:21:22
Üdv. Nekem olyan gondom lenne hogy miután megcsinálta a regisztrációt nem törli ki az értékeket az inputokból. Vagyis ha frissítek azt írja ki hogy a felhasználónév foglalt. Ez akkor gázos ha pl egy üzen?falszer?t szeretnél csinálni, mert ha frissíted akkor mindig újra berakja sz uccsó üzit. Ebben kellene a help hogy ne tegye ezt.
crazy 2009-08-30 22:41:40
Hi Hi! Valaki tudna segítani abban hogy ne kelljen 2x bejelentkezni?
Ubul 2009-08-17 14:09:09
a login.php törzse is benne van a kódban(szövegmez?k,gomb),csak ide nem tettem,mert azzal "elvileg" nincs gond,lévén hogy ugyanaz
Ubul 2009-08-17 14:06:51
Üdv,tetszik az oldal,még kezd? vagyok,átnyálaztam a php 24 óra alattot,meg egy videó tutorialt,szóval én is belemertem vágni egy regisztrációs programba,amit féligmeddig meg is csináltam,csak a Session-öket nem vágtam hogy mit-hogy...de szerencsére itt ráleltem a megoldásra,szóval köszönöm,viszont egy problémám a kóddal lenne,mégpedig a login.php-ban

"
include('db_connect.php');


if(isset($_SESSION['belepett']) || ($_SESSION['belepett'])!="true")
{
if(isset($_POST['login'])){
$nev=$_POST['nev'];
$jelszo=$_POST['jelszo'];
$parancs="SELECT * FROM regiszt WHERE nev='$nev' AND jelszo='$jelszo'";
$eredmeny=mysql_query($parancs,$kapcsolat);
if(mysql_num_rows($eredmeny)!=0){
$_SESSION['nev']=$nev;
$_SESSION['belepett']="true";
header("Location:index.php");
}
else {
print "hibás nick/jelszó
";
}
}

?>"

átnéztem a hsz-eket,beleírtam az isset-et az els? feltételbe,de még így is ugyanúgy kidobja a hibát,hoyghát a _SESSION nem létez? változó,az 5. sorban...ugyan kétszer kell beléptetnem az illet?t,aki már regelve van az adatbázisban,de mikor belép,akkor már tudom olvasni a védett tartalmat,viszont ugyanúgy benne marad a loginoláshoz szükséges textboxok,és nem jeleníti meg a kijelentkezést+a nicket,hogy kivan bejelentkezve,és nemtudom mit szúrhatok el.

A kód vége ugye ez:

"
}
else {
print "Bejelentkezve: ".isset($_SESSION['nev'])."
";
print " Kijelentkezés ";
print "ÜDV";
}

?>
"

valami ötlet,hogy most mit írhattam el így ránézésre(végülis a kód 99%-a ugyanaz ,ami itt van)
dj400 2009-08-13 15:07:09
majd nemsokár leyromde hátha ez alapján meg tudod. az admin.php-ba ted a login.php tartalát és az indexbe hívd be pl az index1.php-t ami az admint hívja be és úgyunúgy a sql-t csak admin néven és oda beregizzel admin néven oda már más nem tud.. ha mindent jól csináltál és beállítottad ha bejelentkeztél kb álítsd be hogy az admin1.php ra irányuljon és azt csak bejelentkezett felfasználó látja vagyis csak az admin ha nem sikerül akkor még majd írok..
biomage 2009-08-11 17:15:03
Pont ezt akarom, de mit írjak be az admin.phpba hogy csak bejelentkez? felhasználó tudja elindítani, más ne!
dj400 2009-08-11 15:04:41
biomage amit te akrarsz az nem nehéz..nyitottam 1 admin sql-t meg csináltam 1 admin részt és az admin részbe csak az léphet be aki bejelentkezett..és az admin részbe csak admin név van más nem csak az admin tud belépni 1 egész admin mappa.. vagy 10 file az egész jó kis admin lett :)
Eicke 2009-08-11 02:05:32
Ha ez alapból ilyen, akkor felesleges a regisztráció rész. :)
A védett részt legalább nem lehet megnézni belépés nélkül, ennyi jó szól a login mellett. :)
Eicke 2009-08-11 02:04:10
S?t..., név és jelszó nélkül is belép. :D:D:D
Vagy én rontottam el valamit, vagy ez így gyík? O.o
Eicke 2009-08-11 01:47:18
Üdv.
Most vagy én rontottam el valamit..., vagy regisztráció nélkül is enged belépni?
Csak kíváncsiságból beírtam egy nevet és jelszót, utána simán belépett...
Hát ez így érdekes. :)
Ezt leszámítva jó kis login. ^^
biomage 2009-08-09 14:21:25
Ja igen ha akarnám bejelentkezés után egyb?l az admin.phphoz irányítana, "login.php ba kéne csak írnom egy sort"
De nem ezt akarom, hanem azt hogy az admin.php, csak bejelentkezett felhasználó tudja elérni.
biomage 2009-08-09 14:10:00
Úgy látom nem érted, azt akarom hogy az admin phpt ne tudja elindítani senki, csak az aki bejelentkezett!
dj400 2009-08-09 13:51:02
php kell csak nem írja ki
dj400 2009-08-09 13:50:26
a kód elejére
dj400 2009-08-09 13:49:42
hát akkor elég kezd? vagy ha ennyit nem tudsz megoldani lOl
..Ez a leggyorsabb módszer 1 gyors átirányítás és kész de ha ebba akarod törlod a printes sort és a kódot be kell rakni de maradj ennél

session_start();

if($_SESSION['belepett'] == true)
{
header("Location: http://oldalnev.hu/user/");
exit;
}
else
{
header("Location: http://oldalnev.hu/valami.html");
exit;
}

?>
biomage 2009-08-07 17:53:44
Hali

Kezd? vagyok de valamennyire értek a phphoz és mysqlhez, de megakadtam :(.
Annyi a bajom hogy ebbe a kapcsolásba kéne phpt írni
"vedett.php"
session_start();

if($_SESSION['belepett'] == true)
{
print "ide akarok php írást, pontosabban egy mysql elérés + módosítást ";
}
else
{
print "meg ide is";
}

?>
Segítsetek köszike!
dj400 2009-08-05 11:05:01
Ez nem rossz csak gratulálni tudok de még ezt ki lehetne egészíteni 1 profillal meg 1 tagok listájával akkor tökéletes lenne. Esetleg valaki össze tudja dobni ??
Csabi95 2009-04-20 19:14:51
A demó miért van tele hibaüzenetekkel?
Sayoka 2009-03-14 00:03:09
Megvan a probléma. Kellett neki a value. :P
Sayoka 2009-03-13 23:56:35
Upsz. Javítva:
input type="image" src="../pic/button_login.png" name="login" class="input_button"
Sayoka 2009-03-13 23:55:48
Üdv.
Nagyon jó a script, viszont támadt egy kis gondom.
Valamiért a formázott input gomb nem küldi át az adatokat.
Ez nem tetszik neki:

Amint viszont átállítom submitra és kiszedem az src-t hibátlanúl m?ködik.
Valakinek van valami ötlete?
Daud 2008-08-21 22:46:25
Ah, megoldodott a problema, a $nick valtozot a login.phpbol elmentettem egy cookie-ba es a kesobbiekben lekertem. Csak az elobb nem mukodott mert a nick=''-nel elhagytam egy '-t :D
Daud 2008-08-21 22:44:43
Sziasztok!

Koszonom az eddigi segedletet, meg 1kerdesem lenne viszont:

Egy kesobbi oldalon hogyan tudok hivatkozni a felhasznalo nevere?
tehat peldaul szuksegem van a tabla egyik adatara (kicsit kibovitettem a tablat):

$omg = "SELECT te FROM `users` WHERE nick='sajt'";

es a sajt helyere kene valahogy berakni annak az illetonek a nick-jet aki be van jelentkezve.
manyi 2008-08-13 23:31:48
Hella!
Még mindíg segítségért rimánkodom!
Ha megfeszülök sem jön össze!
segítsetek légyszi!
El?re is köszönöm!
manyi 2008-08-08 14:55:34
Szegasztok!
Azt hiszem bazi nagy fába vágtam a fejszémet!
Van egy html oldalam amiben egy Iframe-ben nyílik meg minden hivatkozás. Az elképzelésem a következ? volt.
A nyitó oldalról leszedtem a dokumentekre(képek, videók stb.)vonatkozó linkeket, hogy a felhasználónak reggelnie kelljen a megtekintéshez. Az oldalba meghívtam az index.php -t,m?ködik az adatbázis de nem tudom megjelenítettni a védett oldalt és a bejelentkezett nicket és a kijelentkezést.
A másik gebasz az, hogy a bejelentkezéssel és regisztrációval kapcsolatos hibaüziket szeretném az Iframe-ben megjelenítettni.
Ha valaki tudna segíteni nagyon megköszönném.
Ui:kiemelten közhasznú, csóró alapítvány. www.pecsispecmento.hu
manyi 2008-08-07 23:11:37
rájöttem!
manyi 2008-08-07 23:07:29
szega!
a phpMyAdmin beállításnál ezt a hibaüzit kaptam. Tudsz segíteni?
Hiba
SQL-kérés:

CREATE TABLE `phpmyadmin` (

`id` INT NOT NULL AUTO_INCREMENT ,
`nick` VARCHAR( 30 ) NOT NULL ,
`jelszo` VARCHAR( 32 ) NOT NULL ,
`email` VARCHAR( 60 ) NOT NULL
) ENGINE = MYISAM

MySQL jelzi:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
bencebratyo 2008-07-26 11:43:57
Üdv!
Nagyon jó a segédlet, abban szeretnék segítséget kérni, hogy , hogyan tudnám az email cím helyett a nicket kiíratni a "belépett" résznél?
AoLiT 2008-06-26 11:23:39
Helló! Még nagyon kezd? vagyok :) Az szeretném megkérdezni, hogy az install.sql fájlt pontosan hol is kell lefuttatni? El?rre is kössz a segítséget!
valaki 2008-05-13 17:04:52
Aki tud segítsen mert sürg?s lenne.
Kösz
valaki 2008-05-13 17:02:01
Azt írja ki hogy:
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'c6mesako.extra.sql' (1) in /nfs/extra/prepend/prepend.php(159) : system created function on line 26

Warning:
mysql_connect()You can't connect without password! in : on line

in /nfs/extra/prepend/prepend.php(159) : system created function on line 32
Hibás e - mail cím!
valaki 2008-05-13 15:28:13
Hellósztok.
Tudnátok nekem segíteni a MySQL-ben mert az nem megy nekem annyira a többi része már kész van casak ez kellene.
Aki tud segíteni, írjon üzenetet a c6mesako@citromail.hu-ra.
Köszönöm.
kezdo 2008-05-13 10:00:59
Sziasztok!

Nagyon köszönöm a programot!
Nekem jól m?ködik, de van egy kis problémám erre kérnék segítséget. A beléptet? véd egy Internet áruházat. Tökéletesen m?ködik addig amíg nem törl?m a kosár tartalmát, amikor törl?m ki léptet. Mit csináltam rosszul?
Ezt használom a kosártörléshez:

session_start();
session_unset();
session_destroy();
include("./kosar.php");


Köszi a segítséget.
sosjozsef 2008-04-19 23:56:35
Nem néztem meg a linket amit beraktál. De én úgy oldanám meg a dolgot, hogy regisztrációnál adatbázisba gyüjteném a felhasználókat és lenne egy xyz oszlop ahol vagy 0 (nem teljes jogú felhasználó) vagy 1 (admin elbírálta hogy tag lehessen)lenne. Egy admin oldalon megjeleníteném azokat a sorokat ahol az xyz értéke 0. És minden sor után lenne egy engedélyezés gomb amire ha rákattint az admin a 0-t átírná 1-re.

Regisztrációnál természetesen az user 0 értéket kapna és küldenék neki egy mailt hogy a regisztrációd folyamatban van majd küldök még egy mailt ha tag lettél. :D

belépésnél meg csak azok léphetnek be: xyz==1

ha beakar lépni egy xyz==0 akkor kiíratnám hogy regisztrációja folyamatban van... stb...
Saxon 2008-04-17 14:06:15
Megoldottam a dolgot.
De azt hogyan tudom, hogy kitölti a regisztrációt, de az csak egy kérelem melyet az adminisztrátor elbírál, és rákattintva engedélyezi a dolgot. Ezek után válna szerkesztehtővé a dolog.
Ebbe kellene beépíteni.
http://evolt.org/files/Login_System_v.2.0.zip
sosjozsef 2008-04-15 13:53:04
Sziasztok! Ami ezen az oldalon található az hibás! De a forrás fájlok jók! Még nem néztem mi a különbség de ha lesz időm megnézem addigis mindenki a forrás fájlokat töltse le innen:

http://www.segedletek.hu/demok/php/login/login.rar
Saxon 2008-04-13 08:43:32
Sziasztok.
Gondot okoz az install.sql Valamit valahol lehet elcsesztem? mysql hozzáférés beállítva, config.php -ben is. Myadmin-ban install.sql feltöltéskor hibaüzenet #1046 nincs adatbázis kiválasztva. ???
hamutarto 2008-04-12 10:52:29
Hello! Nekem az a nagy problémám lennei hogy egyszerűen nem loginol be. Adatbázisba bekerülnek az adatok de kész tovább nem. Mi lehet a gond?
balb 2008-04-08 17:04:12
Hello!nekem is ugyanaz a problemam mint masoknak:
Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /mnt/users/f/r/frees/login.php on line 4

Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /mnt/users/f/r/frees/login.php on line 5

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /mnt/users/f/r/frees/login.php on line 5

lecci segitsetek!
MSN:
balbb_b@yahoo.com
Yahoo:
balbb_b@yahoo.com

koszonom...
tanulo 2008-03-17 18:01:02
Köszi Bgeorgee!

Közben sikerült megcsinálni, de nagyon köszönöm
Bgeorgee 2008-03-16 21:14:01
Bocsika az előzőt elírtam egykicsit.
A vedett.php igaz ágába kell tenned az oldalad tartamát.
Pl.:include(valami.html); vagy
echo""; az "" jelek közé írod a html kódot.
Bgeorgee 2008-03-15 21:32:39
A védett.php else ágába kell tenned az oldalad tartalmát.
Echo"
...
";
tanulo 2008-03-13 16:54:09
Sziasztok én totál kezdő vagyok a php ba. Tetszik ez a beléptető , csakhogy nekem ez is magas és el akadtam, ezért kérlek segítsetek és köszi. Az a gondom, hogy nem tudom, hogy a védett oldalnál hova írhatom a weblap tartalmát, vagyis ez van az elején " session_start();

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

?>"
Ha utána írom akkor nincs rá hatással közzé meg nem tudom, hogy lehet html elemeket be illeszteni. Vagy máshogy kell?
Az is kellene, hogy hogy tudom meg csinálni, hogy ne külön linkel keljen ha beléptem az oldalt megnyitni hanem egyböl nyíljon meg. Az is érdekelne, hogy hogy lehet úgy meg csinálni, hogy egy frémbe nyíljon meg. Minden segítséget előre is köszönök. Egyszer el kell kezdeni.
Bgeorgee 2008-03-03 21:39:22
Szia Niki!
Nézd meg lejjebb a hozzászólásokat találsz megoldást a problémádra.
2007-08-04 20:26:21
niki 2008-01-04 10:36:01
Valojaban ez okozhat problemat

if($_SESSION['belepett'] == true)
Valki tud ra megoldast?
niki 2008-01-04 10:34:33
Ezt dobaj ki a vedett.php
Notice: Undefined index: belepett in c:program fileseasyphp1-8wwwvedett.php on line 4
Csak szeretnéd... :)
adam2 2007-12-13 19:39:57
Mit kell csinálni ahhoz, hogy elfogadja a <, > jeleket?
eAdam 2007-11-19 19:50:42
az a baja a rendszernek hogy nem akarja bevenni ezt a kódot:<> és ha beirom akkor onnantól meghal...
eAdam 2007-11-19 19:42:40
Segitségeteket kérném... Minden megy odáig, hogy nem tudok védett doksit létrehozni, valaki leirná nekem pontosan hogy hova kell beilleszteni, és mit ( php file-nál ) ?! Nagyon megköszönném, ugyanis itt megakadtam :(
jomadar 2007-11-11 10:52:52
Először is nagyon köszi az anyagért, most kezdek php-val foglalkozni és ez az egyik alap doksim. Nekem viszont előjött az a probléma, hogy a backslash karaktert engedi bevinni a kód. A http://php.planetmirror.com/manual/en/function.eregi.php#57824 szerint a []-ken belül nem kell alkalmazni a -t egyáltalán, hacsak nem kimondottan a backslash-t akarod engedélyezni. Szóval ha a - karaktert közvetlen a [ után teszem [-a-z], akkor simán működik nélkül, tehát elfogadja a kötőjelet. A pont elé []-ben abszolót nem kell .
hypetomy 2007-10-10 12:52:46
Köszi srácok a gyorsaságot, megyin megoldottam :)

Üdv.
hypetomy 2007-10-09 21:46:41
Sziasztok! Megint visszatértem kérdésemmel mert nem tudom megoldani, hogy ebbe a reges belépőbe beletegyek egy kódfelismerőt /robotok ellen/
http://www.cb-talk.de/captcha.html -egy ilyet vagy ehhez hasonlót ami csak akkor engedd regelni ha a képen látható kódott írják be.. segítségeteket előre is köszönöm. üdv.
hypetomy 2007-10-05 12:26:57
meg is van, jól működik köszi még1x a leírást!
hypetomy 2007-10-05 12:08:36
megvan a hiba...amikor a register.phpben meg van adva a VALUES után az id érték '' az először mindig 0-át hozza, és mivel nem ismétlődhet a következőt már nem hozza létre mert az is 0 lenne :)
hypetomy 2007-10-05 10:13:50
Sziasztok!
Először is köszönet a programért, bár mssqlbe lőttem be, de egyszer működött azóta se :) Folyamatosan "Valami baj van az adatbázissal" hibával jön a regnél, csináltam egy próba php-t amiben ugyanazon paraméterekkel (host, user, pass, dbname) léptetem be csak meghatározott értékeket adok a Valuesba és ott megcsinálja... ha valakinek van valami ötlete pls help. thx
requiem 2007-09-22 13:07:20
Itt az oldalon pl úgy van, hogy van egy külön tábla az adatbázisban: jogok. ÉS akkor így:
userid,oldal1,oldal2,oldal3,admin
Meg ilyesmi. Az oldal.. lehet 0 vagy 1. És akkor ezt is viszed sessionben, és vizsgálod...
matek 2007-09-07 18:12:19
Nagyon jó ez a segédlet, érthető még számomra is :-). Segítségeteket szeretném kérni abban, hogy miként tudnám egy egyszerű jogosultság ellenőrzővel kiegészíteni? Elképzalésem az, hogy az adattáblában letrehoztam egy új mezőt amiben egyszerűen vagy igen-t, vagy nem-et állítok be, annak megfelelően, hogy akarom-e engedélyezni a védett oldal meglátogatását az illetőnek vagy nem. Mert így ugye gyakorlatilag bárki megnézhet bármit aki regisztrál. Köszönöm előre is.
csimpee 2007-08-06 12:59:38
Köszi Bgeorgee így már jó;):D
Bgeorgee 2007-08-04 20:26:21
Csimpee

A login.php -ben

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

if (!isset($_SESSION['belepett']) or ($_SESSION['belepett']!== true))
{
if (isset($_POST['login']))
{ //Ha postolt adatokat
$nick = addslashes($_POST['nev']);
$pass = md5($_POST['jelszo']);

$sql = "SELECT * FROM users ";
$sql.= "WHERE (nick='".$nick."')";
$sql.= " AND (jelszo='".$pass."')";

csimpee 2007-08-03 02:27:47
Bgeorgee:
én még nagyon kezdő vok mind MySQL-be mind PHP-ban ezért kérlewk hogy mond el hogy azt a bizonyos "!isset() -el megvizsgáltatom" -ot hol kell megcsinálni
válaszodat előrew is köszööm!
csimpee
Bgeorgee 2007-07-23 20:15:28
Helo!

Találtam megoldást a problémámra. !isset() -el megvizsgáltatom, hogy nem létezik a változó: if(isset($_SESSION['belépett']) or ($_SESSION['belepett']!==true).
{}
Így már nincs figyelmeztetés sem a nemlétező változó miatt.

Bgeorgee 2007-07-22 13:36:27
requiem:

kösz a segítséget, valóban elírás volt. De a MySQL lekérdezésben :
$sql = "SELECT * FROM users ";
$sql.= "WHERE (nick='".$nick."')";
$sql.= " AND (jelszo='".$pass."')";
A program így már működik, de Notice még mindig megvan.

Notice: Undefined index: belepett in c:wwwloginlogin.php on line 11
A $_SESSION['belepett'] -nek nincs érték adva, mert csak azután kap értéket, ha helyes nick és jelszó van beírva és elküldjük az adatokat.
Nem lehet a figyelmeztetést kikapcsolni valahol?
requiem 2007-07-19 19:08:55
adam:

az id - vel nincs semmi baj. Sql injection nem fog átmenni rajta. Lehet próbálgatni a demó változaton...

Bgeorge:
olyan változóra hivatkozol, ami nem létezik. ez pedig a _SESSION elírhattál valamit.
Bgeorgee 2007-07-17 21:18:40
Sziasztok!

"Notice: Undefined variable: _SESSION in c:\www\login\login.php on line 11"
Légyszíves írjatok rá megoldást. Ez miatt nem lehet bejelentkezni, mert hibás nick/jelszó üzenetet ad vissza.
adam 2007-07-15 19:17:09
Sziasztok!

Azt hogy a regisztrációra egy meger?sít? levelet küldjön, azt hogy érdemes csinálni?

Gondolom el?ször egy emailt küldök, amiben benne van a link. Csak azt nem tudom, hogy mi legyen ebben a linkben. Hogy legyen kódolva. $_GET-tel is meg lehetne csinálni, de az nem túl biztonságos.

Köszönettel,
Ádám
adam 2007-07-13 19:48:05
Egy évvel ezelötti hozzászólás. Lehet, hogy azóta már más a helyzet. "Egy laza sql injection-nel ki lehet játszani, szóval nem ártana írni egy ellen?rzést a belép? által megadott névre/passra."
A mostani mennyire biztonságos?

Egy megjegyzés: az adatbázisba való beírás nem volt megfelel? a localhoston. Kivettem az ID-t és m?ködött. Mivel autoincrement van ezért nem is volt rá szükség.

Ádám
requiem 2007-05-06 17:11:48
vedett.php, ha includova van:
<?php
include 'login.php';
?>

vedett.php ha nem includolva van:
<?php
session_start();
ob_start();
include 'login.php';
?>
buco 2007-05-01 17:16:08
Hello!!
Az lenne a kérdésem ,hogy "Ezzel gyakorlatilag el is készültünk. Minden védett lapunk elejére be kell illeszteni a login.php -t (include "login.php";). a session_start - ról se feledkezzünk meg."
Mit kellene pontosan beilleszteni arra az oldalra amit védeni szeretnék?
A választ előre is köszönöm!
Firith 2007-02-27 07:58:02
Azthiszem megvan az első cikkem témája mit írni fogok :) Ha esetleg érdekel valakit, hogy mit lehet kezdeni egy belépett felhasználóval, hamarosan megtalálhatja a cikkemet
bricsi 2006-10-25 10:15:45
Sziasztok, minden jó, azonban egy problémám van:Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /nfs/extra/b/bo/bojocomp/wwwroot/reg_check.php on line 18
Valami baj van az adatbázissal.
Esetleg ha tudtok, kérlek segítsetek, fontos lenne, előre is köszi!
További kellemes napot!
Sziasztok
requiem 2006-10-20 19:51:24
Eddig még nem szólt érte a fordító... :)
raim 2006-10-20 18:27:40
Biztos vagy benne, hogy függvényt lehet brake -lni?
Dáv 2006-09-09 20:36:42
egyébként mondok valamit amivel jobb lehetne a beléptető rendszer oldal elhagyásakor lefut a logout.php tom könnyű mondani , de megcsinálni se olyan nehéz:

<body onload="start();" onunload="document.location.href
='http://www.segedletek.hu/demok/php/login/logout.php'">

Ez nem tom hogy működik-e me ezt csak úgy írtam , de próbáljátok ki!
Dáv 2006-09-09 13:52:15
Bocs , demót
Dáv 2006-09-09 13:51:42
egy kérdés nem értem lefuttatom a phpmyadmin ban az istall.sql-t és utána mit kell?egyébként a demó nem nehéz kijátszani....
requiem 2006-09-09 11:47:22
Nah akkor:
Az a helyzet, hogy azért volt rossz, mert ami a szerveren van, fájl, és ami itt van kiírva nem ugyan az. Mások a tábla nevek. Azért engedett be mindennel, mert nem jó táblából akarta kiolvasni.
Akkor most utoljára:

Minden hibát kijavítottam. A forrás .rar is jó, a demó is jó, és ami ide van írva, az is jó, annyi kikötéssel, hogy a reg_check.php 13. sora itt el van törve, mert nem fér ki, de azt egybe kell írni.

Bence
Anonymus 2006-09-08 21:22:25
Szerintem vagy a rendszer a lúzer vagy én?nem tudom , de a beléptető szentem nem megy me egyszer regizek és belépek kijövök és utána akármit írok a nickhez meg jelszóhoz elfogyadja.
requiem 2006-08-28 09:30:10
A hiba oka: elírás.
Nem a te sarad, az enyém. Mert a saját gépemen más db nevekkel csináltam, és egy helyen a régi maradt véletlen.
De ami kint van az oldalon, az működik.
Most felraktam újra a .rar - t is, kijavítottam, töltsd le újra, jó lesz.
Anonymus 2006-08-25 08:11:07
Sziasztok Pls valaki segítsen!
Nálam ezt a hibát írja az oldalam a login .php re:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /login.php on line 17

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /login.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /login.php:17) in /login.php on line 22

Hogy lehet rajta javítani pls segítsetek kösszy pápá!
Anonymus 2006-08-12 13:40:39
tobb eliras is van benne.. pl
- !== helyett != kell
- if (reg_check($_POST) == rendben)

ez micsoda? :D esetleg =="rendben" (mivel stringet adsz vissza), de akkor mar inkabb egy true-t adjon vissza a fuggveny, ez igy eleg erdekes megvalositas.

mellesleg a legtobb helyen nem fog mukodnui az sql injection vele, mivel apache-n be van love alapbol a magic_quotes.

Anonymus 2006-07-27 03:43:18
Egy laza sql injection-nel ki lehet játszani, szóval nem ártana írni egy ellenőrzést a belépő által megadott névre/passra.
requiem 2006-07-17 12:28:24
Figyelem!
Volt a forrást tartalmazó rar - ban egy apró elírás, de ezt javítottam, szóval ha véletlen nem működött, le kell tölteni újra...
Mondjon Bon jourt...
és legyen Öné az 1.000.000 € nyeremény! Partouche Poker Tour a bwin-en.
www.bwin.com

10.000 €-t keresni havonta
Hogyan keressünk pénzt könnyedén? Kezdjen pénzt keresni még ma!
www.penzt-keresni.net

Toyota készletakció
Auris Optimis modellek 1 000 000 Ft árelőnnyel! Részletek
www.toyota.hu

Élje át a valódi izgalmat
A valóság élményét nyújtja az új Samsung 3D TV, Nézze meg ön is:
www.samsung.com

Licitálj, és nyerj egy
feledhetetlen kávézást a kedvenc sztároddal! További részletek itt:
www.ellenallhatatlanmeghivas.hu

Hirdessen itt