• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP, jak to lepiej zrobic. Podnoszenie poziomu pracownikowi w bazie

Object Storage Arubacloud
0 głosów
254 wizyt
pytanie zadane 10 maja 2017 w PHP przez Bartlomiej Bywalec (2,480 p.)

Witam mam pytanie jak to lepiej zrobic, wyslac przez link ID odebrac $_GET i zrobic zapytanie do bazy podnoszac poziom? (czy to bedzie bezpieczne wgl)

 

Czy odebrac $_GET id a pozniej wlozyc ja do formularzu i wyslac do skryptu ktory podniesie poziom zapytaniem do bazy:

formularz:

<?php require 'skrypt/_block_user.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
    <div class="container">
		<div class="row">
			<h1>BLOKOWANIE PRACOWNIKA</h1>
		</div>
		<form action="skrypt/_block_user.php" method="post">
		<input type="hidden" name="id" value="<?php echo $id;?>"/>
		<p class="alert">czy na pewno zablokowac pracownika?</p>
		<div class="form-actions">
			<button type="submit">Tak</button>
			<a class="btn" href="employees.php">NIE</a>
		</div>
		</div> <!-- /container -->
  </body>
</html>

 

komentarz 10 maja 2017 przez Michał Kazula Pasjonat (19,540 p.)

podnoszenie poziomu

Pierwszy raz się spotkałem z takim określeniem. Chcesz po prostu móc blokować użytkownika.

Nie wiem jak wygląda cały Twój system. Ale jeżeli masz np listę użytkowników w postaci np. tabeli to jak lecisz foreachem po usera to dodaj sobie dwa formy z guzikami:

  • Form 1 - blokuj
  • Form 2 - odblokuj
komentarz 10 maja 2017 przez Bartlomiej Bywalec (2,480 p.)

To jest block user:

<?php require 'skrypt/_block_user.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
    <div class="container">
		<div class="row">
			<h1>BLOKOWANIE PRACOWNIKA</h1>
		</div>
		<form action="skrypt/_block_user.php" method="post">
		<input type="hidden" name="id" value="<?php echo $id;?>"/>
		<p class="alert">czy na pewno zablokowac pracownika?</p>
		<div class="form-actions">
			<button type="submit">Tak</button>
			<a class="btn" href="employees.php">NIE</a>
		</div>
		</div> <!-- /container -->
  </body>
</html>

 

 

<?php

	require 'database.php';
	session_start();
	if(isset($_SESSION['inside'])){

    if($_SESSION['access'] == 0){
    header('location: ../index.php'); }
}
else {
    header('location: ../index.php');
}
	$id = 0;
	if(!empty($_GET['id'])){
		$id = $_GET['id'];
	}
	if(!empty($_POST)){
		$id = $_POST['id'];		
        $pdo = Database::connect();
		$sql = "SELECT * from employees where employees.id = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($id));
		$data = $q->fetch(PDO::FETCH_ASSOC);
		$suspended = $data['suspended'];
        $zablokuj = "zablokowane";
        $sql = "UPDATE employees set suspended = :suspended  where id='$id'";
        $q = $pdo->prepare($sql);
        $q->bindValue(':suspended', $zablokuj, PDO::PARAM_STR); 
        $q->execute();
        Database::disconnect();
		header('Location: ../employees_list.php');   
	}  

Moze byc takie rozwiazanie? nei za duze?

komentarz 10 maja 2017 przez Michał Kazula Pasjonat (19,540 p.)

Mam nadzieję że ten "plain-text" to plik "_block_user.php".

A działa Ci to:

if(isset($_SESSION['inside'])){
     if ($_SESSION['access'] == 0) {
          header('location: ../index.php'); 
     }
}
else {
     header('location: ../index.php');
}

Widzę jakieś nie porozumienie.

W zasadzie nie jest źle.

komentarz 10 maja 2017 przez Bartlomiej Bywalec (2,480 p.)
nie jest zle ale nei jest dobrze :D inside to zmienna sesji gdy jest sie zalogowanym, a access to level pracownika jesli ma sie =1 czyli mozna tworzyc nowe konta, itp

 

tu jest tak ze wpierw pobralem zmienna do block_user.php a pozniej znowu poszla do formularza i POST'em do _block_user.php (tam zostala ustawiona w bazie). Chodzi o to czy jesli bezposrednio bez formularza i POST'a poscilbym getem do pliku php ktory ustawilby w bazie access byloby to bezpieczne? (bo stanowczo mniej kodu by to zajelo dlatego nie wiem jak to zrobic)
komentarz 10 maja 2017 przez Michał Kazula Pasjonat (19,540 p.)
A czego nie ustawisz sobie "levelu" użytkownika w momencie logowania? Przy logowaniu chyba robisz połączenie z bazą? Wtedy wrzuć sobie w sesje albo ciasteczko info czy user ma "level" czy nie.
komentarz 10 maja 2017 przez Bartlomiej Bywalec (2,480 p.)
Jeszcze nie rozgryzałem ciasteczek a mozesz to " info czy user ma "level" czy nie. " rozwinac jak to ma działać?

1 odpowiedź

+1 głos
odpowiedź 10 maja 2017 przez Michał Kazula Pasjonat (19,540 p.)
wybrane 10 maja 2017 przez Bartlomiej
 
Najlepsza

Zacznijmy od początku. Przy tworzeniu systemu logowania musisz się oprzeć o ciasteczko lub sesję.

Przykład ciasteczka:

$name = 'testowe_cisteczko';
$value = 'Wiadomość testowa';
$expire = time() + 3600; // od teraz + 1h (3600s)

setcookie($name, $value, $expire);

if (isSet($_COOKIE[$name])) {
    echo 'Wiadomość testowa.';
} else {
    echo 'Brak pliku cookie!';
}

PS

Tworząc taki mini system najlepiej korzystać z obiektowości.

komentarz 10 maja 2017 przez Bartlomiej Bywalec (2,480 p.)
$name = 'access';
$value = '1';
$expire = time() + 3600; // od teraz + 1h (3600s)
 
setcookie($name, $value, $expire);
 
if (isSet($_COOKIE[$name])) {
    echo 'ok';
} else {
    header('Location: index.php');
}

Ze cos takiego do strony z upowaznieniem??



(Koncze ten projekt a nastepny juz w obiektowosci :P)

 

komentarz 10 maja 2017 przez Michał Kazula Pasjonat (19,540 p.)
No fajnie to zrobiłeś.

Podobne pytania

0 głosów
1 odpowiedź 944 wizyt
pytanie zadane 4 czerwca 2023 w Python przez wojtek_programista Nowicjusz (170 p.)
0 głosów
3 odpowiedzi 171 wizyt
0 głosów
1 odpowiedź 383 wizyt
pytanie zadane 10 listopada 2017 w PHP przez fanpajny Obywatel (1,610 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...