За последние 24 часа нас посетили 17800 программистов и 1625 роботов. Сейчас ищут 1866 программистов ...

Запрет запроса всех кроме авторизованного пользователя по ID

Тема в разделе "PHP для новичков", создана пользователем maestro0728, 10 фев 2017.

  1. maestro0728

    maestro0728 Новичок

    С нами с:
    28 дек 2015
    Сообщения:
    27
    Симпатии:
    0
    Здравствуйте. Помогите переделать код. Есть код указанный ниже. Авторизованный пользователь заходит в свой кабинет и видит свою информацию. Но не кто же ему не мешает подставить в адресной строен id другого пользователя, и воспользоваться чужой информацией. Как сделать так, что если пользователь ввел умышленно чужой id в адресной строке чтобы его автоматом переадресовывало на страницу из которой он пришел или выводилось сообщение типа "Ошибочный запрос".

    Формат адреса такой http://domain.com/form.php?cid=123.
    cid=123 - идентификатор get запроса и id пользователя.

    Код в файле form.php

    Код (Text):
    1. <?php
    2.    
    3. require_once 'Database.php';
    4. $db = new Database();
    5.  
    6.     $id = null;
    7.     if ( !empty($_POST['cid'])) {
    8.         $id = $_REQUEST['cid'];
    9.     }
    10.    
    11.     if ( null==$id ) {
    12.         header("Location: index.php");
    13.     }
    14.    
    15.     if ( !empty($_POST)) {
    16.         // keep track validation errors
    17.         $nameError = null;
    18.         $emailError = null;
    19.         $mobileError = null;
    20.        
    21.         // keep track post values
    22.         $name = $_POST['name'];
    23.         $email = $_POST['email'];
    24.         $tel = $_POST['tel'];
    25.        
    26.         // validate input
    27.         $valid = true;
    28.         if (empty($name)) {
    29.             $nameError = 'Please enter Name';
    30.             $valid = false;
    31.         }
    32.        
    33.         if (empty($email)) {
    34.             $emailError = 'Please enter Email Address';
    35.             $valid = false;
    36.         } else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
    37.             $emailError = 'Please enter a valid Email Address';
    38.             $valid = false;
    39.         }
    40.        
    41.         if (empty($tel)) {
    42.             $mobileError = 'Please enter Mobile Number';
    43.             $valid = false;
    44.         }
    45.        
    46.         // update data
    47.         if ($valid) {
    48.             $db->updateRow("UPDATE clients SET name = ?, email = ?, tel = ? WHERE id = ?",["$name", "$email", "$tel", "$id"]);
    49.            
    50.             $db->Disconnect();
    51.             header("Location: index.php");
    52.         }
    53.     } else {
    54.         $getRow = $db->getRow("SELECT * FROM clients WHERE id = ?", ["$id"]);
    55.        
    56.         $name = $getRow['name'];
    57.         $email = $getRow['email'];
    58.         $tel = $getRow['tel'];
    59.         $_POST['cid'] = $getrow['id'];
    60.         $db->Disconnect();
    61.     }
    62. ?>
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Ну раз он авторизированный, где то же хранится некий признак того что юзер авторизировался? Где?
     
  3. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @maestro0728 какой код авторизации? мб как то так:
    select id from users where pass=password and login=login
    if($id!=$_GET[id]) echo 'низяяяяяя';
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759