2016-05-22 3 views
0

Я нахожусь в процессе создания веб-сайта, и я столкнулся с проблемой, и мне сложно найти решения в Интернете после поиска в течение некоторого времени ,Как скрыть функции php от незарегистрированных пользователей

Таким образом, мой сайт создан с использованием основы бутстрапа и содержит несколько страниц, на которых записи могут быть отображены из базы данных, а затем отредактированы или удалены, а новые записи добавлены в базу данных. Теперь я, очевидно, не хочу, чтобы кто-то просто заходил на мой сайт и удалял или редактировал любые мои записи, поэтому я создал систему регистрации и регистрации, которая работает хорошо.

Но вопрос в том, как скрыть кнопки добавления, изменения и удаления пользователя до входа в систему? Или мне нужно создать другую страницу, чтобы отображать данные?

Моя страница новостей, например, представлена ​​со следующими файлами: config.php; index.php; add_news.php; edit_news; delete_news.php; read_more.php. Теперь я хочу скрыть add_news.php, edit_news.php и delete_news.php от не зарегистрированных пользователей. Пожалуйста, помогите, поскольку я действительно застрял.

<!-- Page Content --> 
<?php 

// load the configuration file. 
include("config.php"); 
    //load news from the database and then ORDER them by newsid 
    //you will notice that newlly added news will appeare first. 
    //also you can OREDER by (dtime) instaed of (news id) 
    $result = mysql_query("SELECT * FROM news ORDER BY newsid DESC",$connect); 
    //lets make a loop and get all news from the database 
    while($myrow = mysql_fetch_array($result)) 
     {//begin of loop 
      //now print the results: 
      echo "<b>Title: "; 
      echo $myrow['title']; 
      echo "</b><br>On: <i>"; 
      echo $myrow['dtime']; 
      echo "</i><hr align=left width=160>"; 
      echo $myrow['text1']; 
      // Now print the options to (Read ,Edit or Delete the news article) 
      echo "<br><a href=\"read_more.php?newsid=$myrow[newsid]\">Read More...</a> 
      if(isset($_SESSION['userid'])) { 
       <div> 
      || <a href=\"edit_news.php?newsid=$myrow[newsid]\">Edit</a> 
      || <a href=\"delete_news.php?newsid=$myrow[newsid]\">Delete</a><br><hr>"; 
       </div> 
     }//end of loop 
?> 
+0

Просто оберните выход (кнопки, формы и т.д.) на том и проверить, если пользователь вошел в систему/имеет правильную роль/имеет тот же идентификатор Teh пользователя, создал запись/что угодно. При входе вы, вероятно, добавляете некоторые пользовательские данные в сеанс, поэтому просто проверьте, есть ли это, и если да: покажите кнопку. – JimL

ответ

0

Использование сессий. Вы можете сохранить зарегистрированную информацию о пользователях (User, Admin и т. Д.), А затем управлять своими представлениями и контролем доступа соответственно.

Вот руководство: http://php.net/manual/en/book.session.php

Вот некоторые примеры из php.net: http://php.net/manual/en/session.examples.php

0

вы можете поместить PHP if условие, которое проверяет, если сеанс пользователя существует до HTML элементов, которые вы хотите скрыть, как это:

<? if(isset($_SESSION['userid'])) { ?> 
     <div>your html here </div> 
    <? } ?> 

самый простой вариант будет проверять один раз, если пользователь вошел в систему, и перенаправить его на страницу входа, если он не является.

в соответствии с кодом, который был добавлен после редактирования, ваш код внутри рамки PHP должно быть:

 if(isset($_SESSION['userid'])) 
    { 
     echo "<div>|| 
    <a href=\"edit_news.php?newsid=$myrow[newsid]\">Edit</a> 
    || <a href=\"delete_news.php?newsid=$myrow[newsid]\">Delete</a> 
    <br><hr> 
    </div>"; 
    } 
+0

Привет, я пробовал это, и это работает до некоторой степени. Теперь код выше хорошо работает и скрывает мою кнопку добавления новостей, но она разбивает всю страницу, когда я использую ее в разделе редактирования и удаления. Теперь я отредактировал свой вопрос и включил код для редактирования и удаления части, которая уже находится в сегменте php. –

+0

Вы не забыли удалить ''? поскольку это не требуется, если условие уже находится внутри сегмента php – AnatPort

+0

Да, я обновил код еще раз, чтобы показать вам, что я сделал, но он все еще не отображает страницу index.php. Добавление этого бита кода нарушает его. Все остальные страницы работают. –

0

Вы должны использовать php sessions. Перед показом кнопок удаления/обновления проверьте, вошел ли пользователь в систему. И это должно быть сохранено как переменная сеанса. Более того, вы должны сделать дополнительный уровень защиты, чтобы, когда кто-то пытается что-то обновить, проверьте, могут ли они.

В любом случае я предлагаю использовать фреймворк при создании веб-приложения. Это облегчает жизнь, когда вы ее повесите. Более того, большинство фреймворков имеют разные пакеты/плагины/расширения с функциональностью, которую вы можете использовать в своем приложении.

В качестве системы аутентификации используется очень много приложений, вы можете просто установить систему аутентификации и пользователя.

0

Найти, если пользователь зарегистрирован или нет. У вас может быть переменная сеанса, чтобы проверить, вошел ли пользователь в систему. поэтому просто проверьте, установлена ​​ли эта переменная сеанса. Пример ..

If (isset($_SESSION['user'])){ 
    // show that records 
} 
0

Попробуйте

<?php 

// load the configuration file. 
include("config.php"); 
//load news from the database and then ORDER them by newsid 
//you will notice that newlly added news will appeare first. 
//also you can OREDER by (dtime) instaed of (news id) 
$result = mysql_query("SELECT * FROM news ORDER BY newsid DESC",$connect); 
//lets make a loop and get all news from the database 
while($myrow = mysql_fetch_array($result)) 
    {//begin of loop 
     //now print the results: 
     echo "<b>Title: "; 
     echo $myrow['title']; 
     echo "</b><br>On: <i>"; 
     echo $myrow['dtime']; 
     echo "</i><hr align=left width=160>"; 
     echo $myrow['text1']; 
     // Now print the options to (Read ,Edit or Delete the news article) 
    if(isset($_SESSION['user_id'])){ 
      echo "<br><a href=\"read_more.php?newsid=$myrow[newsid]\">Read More...</a> 
     || <a href=\"edit_news.php?newsid=$myrow[newsid]\">Edit</a> 
     || <a href=\"delete_news.php?newsid=$myrow[newsid]\">Delete</a><br><hr>"; 
    }//if session 
    }//end of loop 
?> 
+0

Спасибо за ответ. Я заметил, что вы включили read_more.php, но я хотел бы, чтобы пользователь увидел это и использовал его, даже если он не вошел в систему. –

Смежные вопросы