Acces restrictionat la pagini din site

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
bvlucretiu
Mesaje:88

Acces restrictionat la pagini din site

Am un site pe care urmează să-l încarc într-un hosting și am anumiti parteneri care ar trebui să aibă acces numai la o parte a siteului cea care îi reprezinta pe ei pentru actualizarea datelor lor.
Cum ar trebui să procedez să aibă acces printr-un user și o parolă doar la datele lor; există vreo posibilitate în hosting prin cpanel să se restrângă accesul doar la anumite fișiere, sau există ceva script prin care să-i permit unui anumit utilizator să modifice doar ceea ce îl priveste pe el în acea pagină?

MarPlo Mesaje:4343
Se poate cu un script de inregistrare.
Dai sa aiba access la acele pagini doar daca utilizatorul e logat, iar numele lui (retinut in Sesiune) e in adresa URL a acelor pagini.
Ex.: http://site.web/index.php?id=idpag&user=unNume
Apoi, in scriptul php:
if($_SESSIONN['nume']==$_GET['user']) { // afiseaza acea pagina }

bvlucretiu Mesaje:88
MarPlo scrie: Apoi, in scriptul php:
if($_SESSIONN['nume']==$_GET['user']) { // afiseaza acea pagina }
la $_GET[user] introduc numele utilizatorului ?

bvlucretiu Mesaje:88
[quote="MarPlo"iar numele lui (retinut in Sesiune) e in adresa URL a acelor pagini.
[/quote]
cum se retine numele;
eu vreau doar un singur user să aiba acces la acea pagină pentru a o modifica, nu toti utilizatorii logați?
Unde se reține numele lui în Sesiune, căci nu prea înțeleg.
Îmi cer scuze!

trif Mesaje:500
salut, am si eu o mica problema, am facut o bd cu rang-uri si acum vreau sa ii restrictionez. am in felul urmator rangul 1 administrator, rangul 2 moderator, rangul 3 utilizator, si am doar restrictionare doar pt utilizatori

Cod: Selectaţi tot

<?php
	//Start session
	session_start();
	//Check whether the session variable SESS_MEMBER_ID is present or not
	if(!isset($_SESSION['utilizator']) || (trim($_SESSION['utilizator']) == '')) {
		header("location: autentificare.php");
		exit();
	}
?>
ca daca este autentificat sa il lase iar daca nu sa il trimita la autentificare.php. dar aici vine problema, eu am diverse pagini care utilizatorul nu vreau sa o poata accesa ci doar administratorul sau moderatorul iar mai sunt alte pagini care vreau ca doar administratorul sa le acceseze nu si utilizatorul sau moderatorul. cum modific codul de sus ca in functie de rang sa ma lase sa accesez paginile permise la fiecare rang in parte sau daca este alta solutie. de exemplu va dau un exemplu cum am facut ca in functie de rang sa imi afiseze doar meniurile permise de fiecare rang,

Cod: Selectaţi tot

<?php
$q_SQL="SELECT * FROM utilizatori limit 1";
$rezultat_q=mysql_query($q_SQL);
$numar=mysql_num_rows($rezultat_q);
$y=0;
while ($y < $numar) {
  $row=mysql_fetch_array($rezultat_q);
// Cod de test afisare un continut pt. cei autentificati si altul pt. vizitatori 
if(isset($_SESSION['utilizator']) && $row['rang'] == 1 ) {
  echo '<a href="Pagina mea.php">Pagina mea</a><br> <a href="adaugare_cantare.php">Adauga Cantare</a>  <br> <a href="aprobare_cantare.php">Aprobare Cantare</a><br> <a href="utilizatori.php">Utilizatori</a><br> <a href="rang_utilizatori.php">RANG Utilizatori</a><br> <a onclick="return confirm (' . $confirm_message_iesire . ');"  href="iesire.php">IESIRE</a> ';
}
elseif(isset($_SESSION['utilizator']) && $row['rang'] == 2 ) {
  echo '<a href="Pagina mea.php">Pagina mea</a><br> <a href="adaugare_cantare.php">Adauga Cantare</a>  <br> <a href="utilizatori.php">Utilizatori</a><br> <a onclick="return confirm (' . $confirm_message_iesire . ');"  href="iesire.php">IESIRE</a> ';
}
elseif(isset($_SESSION['utilizator']) && $row['rang'] == 3 ) {
  echo '<a href="Pagina mea.php">Pagina mea</a><br> <a href="adaugare_cantare.php">Adauga Cantare</a>  <br> <a onclick="return confirm (' . $confirm_message_iesire . ');"  href="iesire.php">IESIRE</a> ';
}
else {
  echo '';
}
    ++$y;
} 
?>
cam asta sunt, rog sa ma ajutati o o varianta cat mai buna pt securitatea site-urilor. sper ca ati inteles, va multumesc anticipat, cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

trif Mesaje:500
salut, ma poate ajuta cineva? macar cu ceva sfaturi, va rog. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

claUdiu Mesaje:313
Pentru a nu intra un viiztator pe paginile de administrare poti sa faci asa:

Cod: Selectaţi tot

<?
if (!session_is_registered(nume)){
header ("location" login.php");
}
?>
Iar...pentru ranguri eu fac asa:

Fac un if in care selectez sesiunea si numarul rangului care il are acel user...si akl pun:

Cod: Selectaţi tot

if ($nume == 2)
echo "Bine ai venit administrator";
}
Si de aici poti sa faci cu e lseif
Ideea esta ca e ufac un meniu pentru fiecare....si...nah..Fiecare are meniul lui:)

:)Sper ca te0am putut ajuta!
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

calynutz_baciu Mesaje:3
Asta m-a ajutat pe mine o vreme si o sa te ajute si pe tine:

Cod: Selectaţi tot

<? $LOGIN_INFORMATION = array(
  'user' => 'password'  // aici definesti user-ul si parola intre ' '
  
);

// request login? true - show login and password boxes, false - password box only
define('USE_USERNAME', true);

// User will be redirected to this page after logout
define('LOGOUT_URL', 'http://www.rlinklogout.ro/');   //link-ul de logout

// time out after NN minutes of inactivity. Set to 0 to not timeout
define('TIMEOUT_MINUTES', 15); // timpul dupa care te scoate de pe pagina daca nu exista activitate

// This parameter is only useful when TIMEOUT_MINUTES is not zero
// true - timeout time from last activity, false - timeout time from login
define('TIMEOUT_CHECK_ACTIVITY', true);

##################################################################
#  SETTINGS END
##################################################################


///////////////////////////////////////////////////////
// do not change code below - nu schimba nimic mai jos!!!
///////////////////////////////////////////////////////

// show usage example
if(isset($_GET['help'])) {
  die('Include following code into every page you would like to protect, at the very beginning (first line):<br><?php include("' . str_replace('\\','\\\\',__FILE__) . '"); ?>');
}

// timeout in seconds
$timeout = (TIMEOUT_MINUTES == 0 ? 0 : time() + TIMEOUT_MINUTES * 43200);

// logout?
if(isset($_GET['logout'])) {
  setcookie("verify", '', $timeout, '/'); // clear password;
  header('Location: ' . LOGOUT_URL);
  exit();
}

if(!function_exists('showLoginPasswordProtect')) {

// show login form
function showLoginPasswordProtect($error_msg) {
?>
<html>
<head>
  <title>Please enter password to access this page</title>
  <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
  <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
</head>
<body>
  <style>
    input { border: 1px solid black; }
  </style>
  <div align="center">
  <div style="width:500px; margin-left:auto; margin-right:auto; text-align:center">
  <form method="post">
    <h3>Please enter password to access this page</h3>
    <font color="red"><?php echo $error_msg; ?></font><br />
<?php if (USE_USERNAME) echo 'Login:<br /><input type="input" name="access_login" /><br />Password:<br />'; ?>
    <input type="password" name="access_password" /><p></p><input type="submit" name="Submit" value="Submit" />
  </form>
  <br />
  </div>
  </div>
</body>
</html>

<?php
  // stop at this point
  die();
}
}

// user provided password
if (isset($_POST['access_password'])) {

  $login = isset($_POST['access_login']) ? $_POST['access_login'] : '';
  $pass = $_POST['access_password'];
  if (!USE_USERNAME && !in_array($pass, $LOGIN_INFORMATION)
  || (USE_USERNAME && ( !array_key_exists($login, $LOGIN_INFORMATION) || $LOGIN_INFORMATION[$login] != $pass ) ) 
  ) {
    showLoginPasswordProtect("Incorrect password.");
  }
  else {
    // set cookie if password was validated
   setcookie("verify", md5($login.'%'.$pass), $timeout, '/');
    
    // Some programs (like Form1 Bilder) check $_POST array to see if parameters passed
    // So need to clear password protector variables
    unset($_POST['access_login']);
    unset($_POST['access_password']);
    unset($_POST['Submit']);
  }

}

else {

  // check if password cookie is set
  if (!isset($_COOKIE['verify'])) {
    showLoginPasswordProtect("");
  }

  // check if cookie is good
  $found = false;
  foreach($LOGIN_INFORMATION as $key=>$val) {
    $lp = (USE_USERNAME ? $key : '') .'%'.$val;
    if ($_COOKIE['verify'] == md5($lp)) {
      $found = true;
      // prolong timeout
      if (TIMEOUT_CHECK_ACTIVITY) {
        setcookie("verify", md5($lp), $timeout, '/');
      }
      break;
    }
  }
  if (!$found) {
    showLoginPasswordProtect("");
  }

}

?>

Salvezi codul cu numele de exemplu petre.php si il incluzi frumos in pagina lui petre dar la inceputul codului sa pui user-ul petre sau cum vrei tu si parola lui. si il salvezi de cate ori vrei cu nume diferite si in fiecare tot alt user.

Cod: Selectaţi tot

<> include 'petre.php'; ?>

Sper ca ti-am fost de folos. Apropo, are si cookie :twisted: , daca te descurci cu engleza citeste prin cod si il poti seta tu la cat timp vrei, parca la vreo 12 ore expira. :D

Subiecte similare