ugrás a tartalomhoz

PHPandMYSQL login

AZ ismeretlen · 2012. Május. 24. (Cs), 13.49
Sooory a téma címe miatt!(és a besorolása miatt is!)
Hali!
hogyan tudom előírni azt , hogy ne tudjon az ember bejelentkezés nélkül bizonyos oldalakon lépegetni?
őszintén 1DB felhasználó név és jelszó párosom van (ennyi kell)...

sessionnal próbálkozok sikertelenül.
a session valamiért nekem mindig olyan idegennek tűnik ezért most a sütikre szeretnék rátérni.(ha valaki meg győz afelől , hogy a session biztonságosabb mint a süti akkor megfontolom a visszatérést.)

a sessionnál ez a hibaüzenet fogad:(google chrome)

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /web/free/4/valami-d623aee34c78634331bb9ac524478a73/pages/admin/page1.php:1) in /pages/admin/page1.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /web/free/4/valami-d623aee34c78634331bb9ac524478a73/pages/admin/page1.php:1) in /pages/admin/page1.php on line 2

most telepítem a firefoxot, hogy nyomon tudjam követni a sütik alakulását (chormnál még nem jöttem rá , hogy hogyan kell!)

kérdés újra:(ez a fontos)
Hogyan tudom előírni azt , hogy ne tudjon az ember bejelentkezés nélkül bizonyos oldalakon lépegetni?

Előre is köszönöm a hozzáértő szakemberek építőjellegű válaszai!

AZ ISMERETLEN.....
 
1

Session

janoszen · 2012. Május. 24. (Cs), 14.15
A dolgot ugy hivjak, hogy session vagy munkamenet. Itt a Weblaboron is volt mar nehany cikk a temaban, azokat erdemes lenne elolvasni.

Ami a hibauzenetet illeti, szinten volt mar itt is szo rola, a Google is egy jopar talalatot tud adni, legyszi hasznald azt.

Mas: a konnyebb segitseg nyujtas erdekeben celszeru lenne visszaolvasnod a sajat postodat es egy kicsit kevesbe kapkodva, rendszertelenul irni. Ha azt varod, hogy masok idot forditsanak rad, legyszi Te se sajnald az idot a tema megirasatol.
2

hmmmmm

AZ ismeretlen · 2012. Május. 24. (Cs), 14.18
hmmmm....
elgondolkodtató!
viszont "sajnos" erre a kérdésemre nem találtam választ:
Hogyan tudom előírni azt , hogy ne tudjon az ember bejelentkezés nélkül bizonyos oldalakon lépegetni?


na most mégyek felderíteni a cikkeket!
3

Keresoszo

janoszen · 2012. Május. 24. (Cs), 14.30
A keresoszo, amit erdemes lenne hasznalni: "login" vagy "login rendszer"
4

Hogyan tudom előírni azt ,

kuka · 2012. Május. 24. (Cs), 14.31
Hogyan tudom előírni azt , hogy ne tudjon az ember bejelentkezés nélkül bizonyos oldalakon lépegetni?
Attól függ min lépeget:
  • ha dinamikusan generált tartalmon, akkor minden kérés teljesítése azzal kell kezdődjön, hogy ellenőrzöd azonosította-e már magát a látogató, ha meg nem, akkor megtagadod a kiszolgálást
  • ha statikus tartalmon, akkor PHP-vel sehogy, helyette HTTP autentikációra lesz szükséged
5

nos....

AZ ismeretlen · 2012. Május. 24. (Cs), 15.10
dinamikus(php besorolású)
most jött egy ötlet (magát az ötletet ellenőrizd kérlek a kód az.....)

<?php
if ($jelszovaltozo == "123"){
// a többi kód ami akkor jön ha sikeres a kiírás
}
else
{

// ez pedig a hibauzenet helye

}
?>
ez jó,nem?
6

Elképzelhető. Attól függ,

kuka · 2012. Május. 24. (Cs), 15.13
Elképzelhető. Attól függ, hogy mikor, hol, honnan és milyen érteket kap a $jelszovaltozo változó.
7

nos....

AZ ismeretlen · 2012. Május. 24. (Cs), 15.13
dinamikus(php besorolású)
most jött egy ötlet (magát az ötletet ellenőrizd kérlek a kód az.....)

<?php
$jelszovaltozo = $_COOKIE["jelszo"];
if ($jelszovaltozo == "123"){
// a többi kód ami akkor jön ha sikeres a kiírás
}
else
{

// ez pedig a hibauzenet helye

}
?>
ez jó,nem?
asszem enyi
8

jónak láttam elküldeni

AZ ismeretlen · 2012. Május. 24. (Cs), 15.26
jónak láttam elküldeni a kommentemet újra mert láttam , hogy a rendszer úgy mutatja mintha KUKA szólt volna hozzá utoljára!
<?php  
$jelszovaltozo = $_COOKIE["jelszo"];  
if ($jelszovaltozo == "123"){  
// a többi kód ami akkor jön ha sikeres a kiírás  
}  
else  
{  
  
// ez pedig a hibauzenet helye  
  
}  
?>
ez elméletileg jó....
DE mivel a session az elegánsabb így ahhoz kérek egy kis segítséget(googlén kívül).
9

session

Pepita · 2012. Május. 24. (Cs), 16.32
Mindenképp session-t használj azonosításra, először is keresd meg a cikket (munkamenetkezelés asszem volt a címben), az alapján elég jól meg fogod érteni. Figyelj nagyon a biztonsági dolgokra is!

A két hibaüzit azért kaptad, mert már került valami (pl. echo()-val) a kimenetre a session_start() előtt. Ez a fv. legyen a fájl első sora. Pontosabb segítséghez a kód (eleje) is kéne, amivel a hibát előidézted.

Hogyan tudom előírni azt , hogy ne tudjon az ember bejelentkezés nélkül bizonyos oldalakon lépegetni?

Az előíráson nem tudom mit értesz, de ha megjelenítést, akkor pl.:

- A users táblába csinálj még egy mezőt (text típ.), amibe felsorolod ; -vel elválasztva azokat az URL-eket vagy fájlneveket, amiket megnézhet a Júzer.
- Minden oldal elején ellenőrzöd, hogy be van-e jelentkezve.
- Ha igen, lekéred az ő URL-jeit és explode egy tömbbe; ha nem, küldöd a login formra.
- Lekéred a fájlod nevét v. a kért url-t (ehhez ajánlom a manual-ban $_SERVER tömb tanulmányozását).
- Összehasonlítod, hogy amit kért, benne van-e a megengedettek között.
- Előbbi függvényében átírányítasz (ha nem), vagy mehet tovább a folyamatod.

Persze ez egy rendkívül egyszerű megoldás, ettől sokkal jobbat is lehet csinálni. Mindenesetre olvass el mindent, amit javasoltunk.
10

köszönöm

AZ ismeretlen · 2012. Május. 24. (Cs), 16.45
köszönöm szépen a segítségeteket!
11

Szívesen

Pepita · 2012. Május. 24. (Cs), 16.49
Ha elakadsz valahol, kérdezz újra, ha megoldottad, légyszíves írd ide, hogy más is tanulhasson belőle. Jó munkát!
12

no!

AZ ismeretlen · 2012. Május. 24. (Cs), 18.34
a kód elkészült!
kissebb nagyobb javításokat alkalmaztam rajta....

belepes.php:
<form action="belepesellenorzes.php" method="post">
<input type="password" id="jelszo" name="jelszo" />
<input type="submit" />
</form>
belepesellenorzes.php:
<?php  
$jelszovaltozo = $_POST["jelszo"];  
if ($jelszovaltozo == "123"){  
session_start();
$_SESSION['jelszo'] = $_POST["jelszo"];
echo "ön jó jelszót adott meg!";
echo "<META HTTP-EQUIV=Refresh CONTENT='5; URL=http://valahuva.net/'>";

}  
else  
{  

echo "<html>";
echo "<head>";
echo "<META HTTP-EQUIV=Refresh CONTENT='5; URL=http://valahova.hu'>";
echo "ön rossz jelszót adott meg!";
echo "</head>";
echo "</html>";
  
}  
?>  
index.php:
<?php
session_start();
$jelszovaltozo = $_SESSION['jelszo'];    
if ($jelszovaltozo == "123"){    
//valami
}    
else    
{
echo "<h1>Önnek nincs jogosultsága a kért oldal megjelenítéséhez vagy rossz jelszót írt be!!<META HTTP-EQUIV=Refresh CONTENT='5; URL=http://valahova.net'></h1>";
}
?>



köszönöm szépen megint a segítséget!
13

Nem jó

Pepita · 2012. Május. 25. (P), 11.16
Kicsit jobb címet is adhattál volna a commentednek, pl. "Megoldás". (És talán újként kellett volna.)

A hibák:

1. Nem használsz adatbázist: minden Júzernek u.azt a jelszót kell ismernie (tehát a jelszó elveszti funkcionalitását, nyilvános); nem személyhez kötött a bejelentkezés, a progid nem tudja, hogy ki lépett be (ha nem csak olvasási jogai vannak Júzernek, akkor ez nagyon fontos).

2. Több helyen kihagytad a <html> <head> stb. tag-eket, döntsd el: valid HTML kimeneteket akarsz vagy nem.

3. Célszerű a különféle inputokat, adatkezelést, ellenőrzést jól elkülöníteni a megjelenéstől.

4. Átirányításra használd a header('Location: http://www.example.com/hibaoldal1.htm'); függvényt, mindenféle echo nélkül. Ezzel meg tudod oldani, hogy ha nem stimmel valahol valami, mindig u.azt a - szépen formázott - hibalapot add ki, és nem kell minden ellenőrzött oldalon vacakolni vele.

5. Soha ne tegyél session-be, cookie-ba, stb. jelszót, pláne minden titkosítás nélkül!! Gondolj arra: a session is (többnyire) sütiben tárolódik, ami a kliens gépén bekerül egy szöveges fájlba. Ezért ezt úgy kell kezeld, hogy bárki elolvashatja. Javaslom, nézz utána a PHP alapvető biztonsági kérdéseinek.

Na, így hirtelen ennyit. Biztos lehetne még jópár dolgon javítani, elsőre nekem ennyi szúrta nagyon a szemem.
15

Javitas

janoszen · 2012. Május. 25. (P), 11.44
Apro javitas: a session adatok nem tarolodnak kliens oldalon, ergo nem jelent biztonsagi kockazatot a jelszo sessionben tarolasa. Ettol eltekintve persze nem ajanlott.
16

Húú, valóban!

Pepita · 2012. Május. 25. (P), 12.16
Elnézést kérek, köszönöm a javítást. Kicsit összeakadtak fejemben a sütik fogaskerekei a session-ökével...

Szerk.: akkor egy kis cikkajánló a témában AzIsmeretlennek:
Munkamenet kezelés alapjai
Munkamenet kezelés biztonsági kérdései
PHP, valamennyire biztonságosabban
14

Privát mail

Pepita · 2012. Május. 25. (P), 11.41
Bocsi, de ez a probléma szerintem a fórumba való, nem válaszolok mail-en. Ha nekem ez a megoldás tetszene, jeleztem volna itt, hogy keress meg.
17

ánye!

AZ ismeretlen · 2012. Május. 25. (P), 13.26
most így hirtelen elkezdek válaszolni:
1.:
2szóból áll a felhasználó nevem.
2.:
1. Nem használsz adatbázist: minden Júzernek u.azt a jelszót kell ismernie (tehát a jelszó elveszti funkcionalitását, nyilvános)
erre volt az email
3.:
Több helyen kihagytad a <html> <head> stb. tag-eket, döntsd el: valid HTML kimeneteket akarsz vagy nem.
a header.php beolvassa a <html> és a <head> tagokat.
és a végén a veg.php le is zárja :)
4.:
élszerű a különféle inputokat, adatkezelést, ellenőrzést jól elkülöníteni a megjelenéstől.
bővebb kifejtést please!
5.:
Átirányításra használd a header('Location: http://www.example.com/hibaoldal1.htm'); függvényt, mindenféle echo nélkül. Ezzel meg tudod oldani, hogy ha nem stimmel valahol valami, mindig u.azt a - szépen formázott - hibalapot add ki, és nem kell minden ellenőrzött oldalon vacakolni vele.
nincs időzítve csak ennyi a bajom!(ez is megfordult a fejemben csak utána elvetettem!)
6.:
Soha ne tegyél session-be, cookie-ba, stb. jelszót, pláne minden titkosítás nélkül!! Gondolj arra: a session is (többnyire) sütiben tárolódik, ami a kliens gépén bekerül egy szöveges fájlba. Ezért ezt úgy kell kezeld, hogy bárki elolvashatja. Javaslom, nézz utána a PHP alapvető biztonsági kérdéseinek.

erre már válaszoltak....
Deeee hogyan tudom a sessinont letitkosítani majd kiolvasni??

7.:
Bocsi, de ez a probléma szerintem a fórumba való, nem válaszolok mail-en. Ha nekem ez a megoldás tetszene, jeleztem volna itt, hogy keress meg.
mindjárt ki lesz javítva!


na így hirtelen ennyi!
18

Minye?

Pepita · 2012. Május. 25. (P), 16.37
1. Ugye nem várod el, hogy pontosan megjegyezzem, míg másnak válaszolok? Vagy egy kommenthez tartsak nyitva sok lapot? Ilyesmin nem szoktunk itt fennakadni.

2. Miután post-oltam, láttam is.

3. Na, akkor lehet pont ez a header.php okozta a kezdeti hibaüziket. Viszont így a "helyi echoval" kiírt azonos tag-ek nem stimmelnek. (Megj.: nem nekem kell megfeleltetned a munkádat, hanem magadnak/megrendelődnek/... Ha írok/írunk egy észrevételt, azt építő szándékkal tesszük, felesleges ez a védekező álláspont.)

4. Nézz utána (pl. wikipedia): MVC. Én ugyan CMV-nek hívnám a sorrendiség miatt, de ez a "hivatalos" rövidítése. (Model-View-Controller)

5. Miért kéne időzíteni? És miért pont 5 (ha jól emékszem) másodpercre? Ez valakinek túl gyors, másnak túl lassú. Nem tudod úgy megcsinálni, hogy minden látogatódnak tetszen.

6. Igen, és láthatod, hogy be is linkeltem pár cikket, amik elolvasásával meg fogod érteni a session működését. Vannak további cikkek is, ezek csak a legfontosabbak.

7.
mindjárt ki lesz javítva!
??? Ezt nem értem.

Egyebek:
Látom, több témát is nyitottál, valójában egy probléma megoldása érdekében. Nehéz lesz még neked is összeválogatni belőle a neked megfelelő utat/megoldást, másnak egyszerűen lehetetlen.
19

oké!

AZ ismeretlen · 2012. Május. 25. (P), 16.43
oké sajnálom!
másik fórumon (nemrég szűnt meg) ha a nevet rosszul írjuk akkor meglátogat minket az admin egy levelével.

6. Igen, és láthatod, hogy be is linkeltem pár cikket, amik elolvasásával meg fogod érteni a session működését. Vannak további cikkek is, ezek csak a legfontosabbak.

azokat elolvastam...
please külsős linkeket!
20

Mi nem tiszta?

Pepita · 2012. Május. 25. (P), 17.10
azokat elolvastam...
És mi az amit nem értesz? Ha jól emlékszem ezekben a cikkekben (kommentekben) is van pár további csemegéznivaló.
please külsős linkeket!
Miért? Mi bajod a WL cikkjeivel? Olyanokat linkeltem, amik nagyobbrészt ma is megállják a helyüket. Bocs, de helyetted senki nem fog guglizni, egy nagycsomó kulcsszót is kaptál, amire kereshetnél.

Továbbiak:

Ezzel kellett volna kezdjem,
PHP kézikönyv (le is töltheted a kézikönyvet),
Nagy Gusztávnak szerintem nagyon jó jegyzetei/könyvei vannak.

Aztán létezik még millió onlány és letölthető kézikönyv, ezekre én vagy véletlenül szoktam rátalálni, vagy itt rákérdezek. Viszont - ez az én hibám - sok letöltött leírást nem jegyzek fel, hogy honnét volt.
21

koszz

AZ ismeretlen · 2012. Május. 25. (P), 20.41
mar ertem