Hogy tudok egy PHP oldalt védetté tenni?
Ugye van a login rendszerem, ami cookie-t használ.
Erre hogykellene rávizsgálnom pl: a profile.php elején?
Vagy hogyan tudnám védeni a tartalmat? mondjuk ez nemis kell külön hiszen ha nemvagyunk belépve (nem létezik a süti akkor egyből átírányít egy Locate parancsal, nem?)
Segítenétek ebben a pársorban?
Mert most ezzel elakadtam kicsit :/
Köszönöm
Hogy használ sütit?
Mert ha csak annyit teszel el egy sütibe hogy belépve, az semmit nem ér.
Használj inkább sessiont, jobban jársz.
Hajaj, eleve nagyon rossz az elképzelésed is.
Ha cookie van, akkor tilos csak azt nézni, hogy létezik-e vagy sem, mivel az a felhasználó gépén van, és tudja is módosítani.
A cookienak kell valami tartalmat adni, ami alapján lehet azonosítani a felhasználót. NEM A FELHASZNÁLÓNEVET KELL BELEÍRNI! Mert akkor bárki beléphet bárki fiókjába!
Például generálsz egy random hash-et és az lesz egy id. És azt írod a cookie-ba, majd ellenőrzöd, ha az az id helyes akkor beengeded, ha nem akkor átirányítod a főoldalra.
De mivel még ennyire nem értesz hozzá (a kérdés alapján) maradj inkább a session-nél, mert az biztonságosabb ilyen szempontból.
Hátsz valóban, még csak kapizsgálom a témát, esetleg ez alapján, tudnál nekem írni egy alap profile.php-t?
Annyi kikötésem lenne hozzá hogy formailag ugyanaz legyen (div) meg fenn a Üdvözöllek, username meg a kijelentkezés megmaradjon, csak a tartalmat kellene valahogy levédeni hogy konkrétan az URL ismeretében ne férjenek hozzá.
index.php
<?php
/* Cookie keresés*/
session_name('LoginForm');
@session_start();
error_reporting(0);
include("config.php");
/* Hibakeresés*/
$error = '';
if(isset($_POST['is_login'])){
$sql = "SELECT * FROM ".$SETTINGS["USERS"]." WHERE `email` = '".mysql_real_escape_string($_POST['email'])."' AND `password` = '".mysql_real_escape_string($_POST['password'])."'";
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
$user = mysql_fetch_assoc($sql_result);
if(!empty($user)){
$_SESSION['user_info'] = $user;
$query = " UPDATE ".$SETTINGS["USERS"]." SET last_login = NOW() WHERE id=".$user['id'];
mysql_query ($query, $connection ) or die ('request "Could not execute SQL query" '.$query);
}
else{
$error = 'Nem létezik ilyen email/felhasználó!';
}
}
if(isset($_GET['ac']) && $_GET['ac'] == 'logout'){
$_SESSION['user_info'] = null;
unset($_SESSION['user_info']);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Üdvözöllek a főoldalon!</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css">
<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/jquery.validate.min.js"></script>
<script src="js/main.js"></script>
</head>
<body>
<div id="container">
<div class="top">
<div id="banner">
<!--HA BE VAN JELENTKEZVE AKKOR A BEJELENTKEZVE MENÜT LÁTJA-->
<?php if(isset($_SESSION['user_info']) && is_array($_SESSION['user_info'])) { ?>
<div class="bejelentkezve_menu">
Üdvözöllek, <b><a href="profile.php"><?php echo $_SESSION['user_info']['name'] ?>! </a></b>
<a href="index.php?ac=logout" class="logout float-right">Kijelentkezés</a>
</div>
<!--HA NINCS BEJELENTKEZVE AKKOR A LOGIN FORMOT LÁTJA-->
<?php } else { ?>
<div class="bejelentkezve_menu">
<form id="login-form" class="login-form" name="form1" method="post" action="index.php">
<input type="hidden" name="is_login" value="1">
<table>
<tr>
<td>
<input id="email" name="email" class="form-control required" type="email" placeholder="Email">
<input id="password" name="password" class="form-control required" type="password" placeholder="Jelszó">
<input name="submit" type="submit" value="Bejelentkezés"/>
</td>
</tr>
</table>
</form>
</div>
<?php } ?>
<!--ITT KEZDŐDIK A TARTALOM-->
<img src="bgc.jpg" width="1200px" height="165px">
</div>
<div id="menubar">
<center>
<a href="">| FŐOLDAL |</a>
<a href="">| MÁSODIK |</a>
<a href="">| HARMADIK |</a>
<a href="">| NEGYEDIK |</a>
<a href="">| ÖTÖDIK |</a>
<a href="">| HATODIK |</a>
</center>
</div>
</div>
<div id="content">
<!--ITT KEZDŐDIK A REJTETT TARTALOM-->
<!--ÚJRA MEG KELL VIZSGÁLNI, HOGY BE VAN-E JELENTKEZVE-->
<?php if(isset($_SESSION['user_info']) && is_array($_SESSION['user_info'])) { ?>
<!--HA BE VAN JELENTKEZVE, AKKOR EZT A TARTALMAT LÁTJA-->
<!-- ****************************************************************************************************************************************** -->
<p>Ez itt a rejtett tartalom helye.</p>
<!-- ****************************************************************************************************************************************** -->
<?php }else{ ?>
<!--HA VALAMI HIBA TÖRTÉNT A BEJELENTKEZÉS SORÁN AKKOR KIÍRJUK-->
<?php if($error) { ?>
<em>
<p><center><?php echo $error ?></center></p>
</em>
<?php }else{ ?>
<!--HA NINCS BEJELENTKEZVE ÉS NINCS HIBA, AKKOR JELENTKEZZEN BE!-->
<p>Jelentkezz be!</p>
<?php
}
}
?>
</div>
</div>
</body>
</html>
Nem nem írom meg kenek a profil.php-at.
Hogy miért nem?
Azért mert ha még csak kapizsgálod, az az jelenti hogy tanulod. Ha szeretnél tudni is valami, akkor ideje megtanulni a google-t használni és keresni megoldásokat.
Nézz youtube-on videókat ilyen login rendszerekről, találd meg amit akarsz és csináld meg.
Mert persze megcsinálhatom én is, de ha csak úgy megcsinálom, akkor nekem mi hasznom van belőle? Gondolom nem fizetnél érte, és neked se lenne hasznod belőle, mert úgy tanul az ember ha sikerül megoldania a problémákat. Ha sikerült megoldani, akkor legközelebb már nem fogsz ilyen problémába ütközni.
Mivel ez egy eléggé egyszerű alap feladat, ezért kétlem, hogy egy kis keresgéléssel ne tudd megoldani.
Egyébként kicsit átnézve amit kiírtál kódot nem értem hol a probléma?
Ugyan azt kell megcsinálnod a profil.php-ban mint a login formnál.
Csak annyi különbséggel, hogyha nincs bejelentkezve, akkor átirányítod a főoldalra.
if(isset($_SESSION["belepve"])) { Tartalom amit csak belépett felhasználó láthat. } else { Ezt már mindenki látja. }
Loginban én így oldottam meg:
$_SESSION["belepve"] = 1;
Üdv.
Duku
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!