• Добро пожаловать на инвестиционный форум!

    Во всем многообразии инвестиций трудно разобраться. MMGP станет вашим надежным помощником и путеводителем в мире инвестиций. Только самые последние тренды, передовые технологии и новые возможности. 400 тысяч пользователей уже выбрали нас. Самые актуальные новости, проверенные стратегии и способы заработка. Сюда люди приходят поделиться своим опытом, найти и обсудить новые перспективы. 16 миллионов сообщений, оставленных нашими пользователями, содержат их бесценный опыт и знания. Присоединяйтесь и вы!

    Впрочем, для начала надо зарегистрироваться!
  • 🐑 Моисей водил бесплатно. А мы платим, хотя тоже планируем работать 40 лет! Принимай участие в партнеской программе MMGP
  • 📝 Знаешь буквы и умеешь их компоновать? Платим. Дорого. Бессрочная акция от MMGP: "ОПЛАТА ЗА СООБЩЕНИЯ"

Авторизация на php

zlkifl

Любитель
Регистрация
08.02.2011
Сообщения
359
Реакции
6
Поинты
0.000
Добрый день! Возникли трудности следующего характера:
У меня есть страница, которая, с помощью php, вытягивает пару столбиков из MySQL и отображает их в браузере. Мне надо сделать так, что бы эту страницу видел только я. Как я понимаю, мне надо создать ещё одну страницу с авторизацией, и, при правильно введённых данных в эту форму, она отправляет меня на нужную мне страницу.
Каким образом это реализовать? Только надо учесть ещё то, что без авторизации человек не может перейти на нужную страницу, путём грубого вбивания её адреса в адресную строку браузера.

Буду очень благодарен за любую помощь. Спасибо.
 

Senator2

ТОП-МАСТЕР
Регистрация
25.09.2007
Сообщения
7,027
Реакции
489
Поинты
0.000
Вот Вам самый простой, наверное, вариант парольной защиты...
Ввели правильный пароль - попали на страницу, не ввели - получили ошибку..
PHP:
<?php
function authenticate() 
{
    header('WWW-Authenticate: Basic realm="Какой-то заголовок"');
    header('HTTP/1.0 401 Unauthorized');
    echo('А вот и не угадали...');
    die();
}

$pass = "SuperSecretPassword";
if (!isset($_SERVER['PHP_AUTH_PW']) || ($_SERVER['PHP_AUTH_PW'] != $pass)) 
{
    authenticate();
} 
else 
{
  $url = 'http://секретная страница.php';
  // Перенаправляем на нужную страницу
  header('Location: '.$url);
}
?>
 

zlkifl

Любитель
Регистрация
08.02.2011
Сообщения
359
Реакции
6
Поинты
0.000
Спасибо, но что будет если нужный адрес (который мне и надо защитить) вбить напрямик в адресную строку браузера? Человек сразу попадёт на эту страницу, и ничего вводить ему не потребуется, так?

Но если, допустим, таким образом и поступить. Тогда ещё вопрос: есть возможность каким-то образом "ненужному" человеку узнать этот "секретный" адрес, если он нигде светиться не будет?
 

Senator2

ТОП-МАСТЕР
Регистрация
25.09.2007
Сообщения
7,027
Реакции
489
Поинты
0.000
Спасибо, но что будет если нужный адрес (который мне и надо защитить) вбить напрямик в адресную строку браузера? Человек сразу попадёт на эту страницу, и ничего вводить ему не потребуется, так?

Но если, допустим, таким образом и поступить. Тогда ещё вопрос: есть возможность каким-то образом "ненужному" человеку узнать этот "секретный" адрес, если он нигде светиться не будет?

Так можно ведь не редирект делать, а сразу вписать код страницы, которую Вы хотите видеть...
Т.е. - вот там, внутри else, и пишите сразу то что Вы хотите видеть при вводе правильного пароля..
PHP:
<?php
function authenticate() 
{
    header('WWW-Authenticate: Basic realm="Какой-то заголовок"');
    header('HTTP/1.0 401 Unauthorized');
    echo('А вот и не угадали...');
    die();
}

$pass = "SuperSecretPassword";
if (!isset($_SERVER['PHP_AUTH_PW']) || ($_SERVER['PHP_AUTH_PW'] != $pass)) 
{
    authenticate();
} 
else 
{
 // пишем здесь код, который вытягивает нужные данные из MySQL и показывает их нам.
}
?>
 
Последнее редактирование:

Greg144

Профессионал
Регистрация
22.01.2010
Сообщения
930
Реакции
137
Поинты
0.000
PHP:
<?php 
$pass = "SuperSecretPassword";
if (!isset($_POST['password']) || ($_POST['password'] != $pass))  
{
echo '<form method="POST">Пасс? <input name="password" type="password"><input name="submit" type="submit"></form>';
}
else
{
include "security_page.php";
//или
//echo 'полный код страницы';
// в этом случае следите за скобками "" и '' в коде html
}
?>

upd: пока я тут писал шедевр - сенатор уже накатал пост)

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

PS: логин в случае сенатора любой канает...

добавлено через 9 минут
Тогда ещё вопрос: есть возможность каким-то образом "ненужному" человеку узнать этот "секретный" адрес, если он нигде светиться не будет?

Да, если это хостер, и скрипты не зазендены. Хотя и зазенденные скрипты можно дезендить. Это зависит от цены вопроса и порядочности хостера.
 
Последнее редактирование:

mzcoding

Любитель
Регистрация
16.06.2010
Сообщения
141
Реакции
7
Поинты
0.000
Че парится, просто сессии используй и все
Страница авторизации auth.php:
PHP:
<?php
  session_start();
  //код доступа
  $secret_key = "keysecret";
 if($_SESSION['file']){
 	header("Location: secure.php");
 }else{
 ?>
 <form  method="post">
 Пароль доступа: <input name="key" type="password" /><br />
 <input type="submit" value="Вход" style="border:1px solid;" name="button"/>
</form>
<?php
 }
 if(!empty($_POST)){
 	$key = htmlspecialchars($_POST['key']);
 	if($key === $secret_key){
 	    $_SESSION['file'] = $key;
 		echo "Вы успешно вошли<br />";
        echo "Перейти на секретную страницу: <a href='secure.php'>Перейти</a>";
 	}else
 		die("Ошибка авторизации");
 }
 else
 	return false;
?>
А секретную страницу назовем secure.php
PHP:
<?php
session_start();
if(!$_SESSION['file'])
     die('Вы не авторизированны, доступ на данную страницу вам закрыт');
else
    //Текст страницы секретной
    echo "<h1><center>Ура, вы попали в секретный раздел!!!</center></h1>";
?>
Теперь даже если юзер узнает имя секретной страницы, попасть на нее он не сможет)
 

zlkifl

Любитель
Регистрация
08.02.2011
Сообщения
359
Реакции
6
Поинты
0.000
Спасибо огромное всем за помощь!
Да, если это хостер, и скрипты не зазендены. Хотя и зазенденные скрипты можно дезендить. Это зависит от цены вопроса и порядочности хостера.
Что значит "зазендены"?
 

OrlandO

Любитель
Регистрация
17.05.2007
Сообщения
752
Реакции
0
Поинты
0.000
можно на странице обработки логина добавить переменную(любую), а на странице, на которой будет авторизация - сделать проверку, если эта переменная будет равна 1 - выводить информацию, если 0 - не выводить!
 
Сверху Снизу