• 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

VPS Starter Arubacloud
0 głosów
284 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ź 1,653 wizyt
pytanie zadane 4 czerwca 2023 w Python przez wojtek_programista Nowicjusz (170 p.)
0 głosów
3 odpowiedzi 243 wizyt
0 głosów
1 odpowiedź 524 wizyt
pytanie zadane 10 listopada 2017 w PHP przez fanpajny Obywatel (1,610 p.)

93,022 zapytań

141,986 odpowiedzi

321,288 komentarzy

62,367 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...