[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Личный кабинет
ANG3
Всем привет. Я сделал личный кабинет. Туда я захожу, просматриваю данные из базы, удяляю.

Сделал я его с помошью скрипта Admin-login-only. Скрипт работает с сессиями.
Лог и пас храняться в файлике secret.php. Перед началом кода страницы которую я хочу защитить ставитсявот такой код.
PHP
<?php require_once("adminOnly.php");


Формы отправки данных в базу защищены вырезкой тегов. Файл с логом и пасом к MySQL тоже просто лежит в папке на сайте и вставляется в страницы с помощью include.

Admin-login-only могу выложить.
register_globals=on
всё что идёт в базу из форм получаю $_GET.

Это нормальная защита?)



Спустя 24 минуты, 33 секунды (28.07.2009 - 18:46) Sylex написал(а):
ANG3
выкладывай свой код... доклад не очень твой

Спустя 16 минут, 24 секунды (28.07.2009 - 19:02) ANG3 написал(а):
Вот gполучаю из формы
PHP
<?php
include('mysql.php')  //  мой файл с логином и пасом
?>

<?php
$name 
trim(strip_tags($_POST['name']));
if ( 
strlen($name)>
{


Вот ещё
PHP
$id=$_GET['id'];  
mysql_query ("SET NAMES `cp1251`");

$query="SELECT * FROM `order` WHERE `id`='$id'"// и так далее



Admin-Login-only
Выкладываю содержимое файла который выключается при заходе на страницу которую нужно защитить. Включается он так.

PHP
<?php require_once("adminOnly.php");


Сам скрипт из файла AdminOnly.php
PHP
<?php
session_start
();
if(   (!isset(
$_SESSION['adminUser'])) || (!isset($_SESSION['adminPassword'])) ) {
    include_once(
"adminLogin.php");
    exit;
}
// requires for multi applications inter-operability using same admin-Login-Only module
if(file_exists("util.php")) { // phpyellow admin user and password file
    
require_once("util.php");
}
if(
file_exists("mysetup.php")) { // give admin user and password file
    
require_once("mysetup.php");
}
if(
file_exists("secret.php")) { // admin-Login-Only admin user and password file
    
require_once("secret.php");
}
if(
file_exists("db_x.php")) { // all other admin user and password file
    
require_once("db_x.php");
}
if(
file_exists("configure.php")) { // not commented
    
require_once("configure.php");
}
/* adminOnly.php
   if the session variables are not set or are incorrect values 
   then present the login screen
*/
if( ($_SESSION['adminUser'] != ADMINUSER) || ($_SESSION['adminPassword'] != ADMINPASSWORD) ) {
    
//header("Location: adminLogin.php");
    
include_once("adminLogin.php");
    exit;
}else{
?>
<table>
<tr>
    <td width=32><a href="adminLogOut.php"><img src="appimage/icons/icon_logout.gif" width="32" height="32" border=0 alt="Logout"></a></td>
    <td width=32><a href="<?php echo ADMINHOME;?>"><img src="appimage/icons/icon_admin.gif" width="32" height="32" border=0 alt="Admin"></a></td>
    <td width="100%" align="center"><div style="background-color:gold;font-size:xx-small;font-style:italic;">Page secured by <a href="http://www.globalissa.com" target="_blank">admin-Login-Only</a> | <a href="http://www.globalissa.com/checkversion/index.php?productname=admin-Login-Only&installversion=2.1" target="_blank">Check this version 2.1</a></div></td>
    <td width=32><a href="<?php echo ADMINHOME;?>"><img src="appimage/icons/icon_admin.gif" width="32" height="32" border=0 alt="Admin"></a></td>
    <td width=32><a href="adminLogOut.php"><img src="appimage/icons/icon_logout.gif" width="32" height="32" border=0 alt="Logout"></a></td>
</tr>
<tr>
    <td style="font-size:x-small;"><a href="adminLogOut.php">Logout</a></td>
    <td style="font-size:x-small;"><a href="<?php echo ADMINHOME;?>">Admin</a></td>
    <td>&nbsp;</td>
    <td style="font-size:x-small;"><a href="<?php echo ADMINHOME;?>">Admin</a></td>
    <td style="font-size:x-small;"><a href="adminLogOut.php">Logout</a></td>
</tr>
</table>
<?php }


Вот сылка на весь скрипт + описание его:
http://www.woweb.ru/load/94-1-0-3138

З.Ы.
Чем $_POST отличается от $_GET? В моём коде и то и то выполняет одинаковую функцию.

Спустя 2 минуты, 21 секунда (28.07.2009 - 19:05) Kuliev написал(а):
ANG3
PHP
$id = isset($_GET['id']) ? $_GET['id'] : null;


Спустя 9 минут, 3 секунды (28.07.2009 - 19:14) Sylex написал(а):
Цитата (ANG3 @ 28.07.2009 - 22:02)
$id=$_GET['id'];
mysql_query ("SET NAMES `cp1251`");

$query="SELECT * FROM `order` WHERE `id`='$id'"; // и так далее


это небезопасно

Спустя 19 минут, 52 секунды (28.07.2009 - 19:34) ANG3 написал(а):
Цитата
это небезопасно

Как безопасно? хотябы намекните.

Цитата
PHP
$id = isset($_GET['id']) ? $_GET['id'] : null;

Распишите смысл плз.

Спустя 4 минуты, 32 секунды (28.07.2009 - 19:38) Kuliev написал(а):
ANG3
если переменная существует то она то пишем ее в $id если нет то в $id пишем NULL

Спустя 21 минута (28.07.2009 - 19:59) ANG3 написал(а):
Цитата
если переменная существует то она то пишем ее в $id если нет то в $id пишем NULL


А как она может не существовать? Если кто-нибудь изменит строку? У меня там Id. Если его изменить то ты попадёшь или не туда или на страницу где показан только несуществующиий id полученый GET. Я вставил этот код и ввёл сначала несуществующий id, затем 0 и пустоту. Мне такой результат и выводит.

Отправляю
PHP
while ($row=mysql_fetch_array ($result)) {  

$name=$row['name'];
$date=$row['date'];
$id=$row['id'];
$link "<a href='list2.php?id=".$id."'>".$word."</a>";


Получаю
PHP
<?php
$id 
= isset($_GET['id']) ? $_GET['id'] : null
mysql_query ("SET NAMES `cp1251`");

$query="SELECT * FROM `order` WHERE `id`='$id'";


Ничего не меняется, как бы я строку не изменял.
blink.gif Ничего не понимаю.

Спустя 4 минуты, 52 секунды (28.07.2009 - 20:04) ИНСИ написал(а):
сделай хотя бы так:
PHP
if(isset($_GET['id'])) { $id htmlspecialchars(stripslashes($_GET['id'])); }


и
PHP
mysql_query ("SET NAMES `cp1251`");

замени на, в файле .htaccess
AddDefaultCharset Windows-1251

Спустя 11 минут, 58 секунд (28.07.2009 - 20:16) ANG3 написал(а):
Спс. htmlspecialchars - убирает какие-то хтмл теги, а stripslashes кавычки.
Я правильно понял?
blink.gif
PHP
trim(strip_tags($_GET['id']));

Можно его использовать тут? Чем он лучше или хуже? Я использовал такой код при отправке заявки в базу.

Спустя 5 минут, 13 секунд (28.07.2009 - 20:21) ИНСИ написал(а):
попробуй так:
PHP
while($row = mysql_fetch_array($result))
    { 
        if
(!isset($_POST['id'])) { $_POST['id'] = $id = $myrow_mail["id"]; }
        if(!isset($_POST['date'])) { $_POST['date'] = $date = $myrow_mail["date"]; }
        if(!isset($_POST['name'])) { $_POST['name'] = $name = $myrow_mail["name"]; }
        
        $link 
= "<a href='list2.php?id=".$id."'>".$word."</a>";
    }


PHP
if(isset($_GET['id'])) { $id = htmlspecialchars(stripslashes($_GET['id'])); }
    mysql_query ("SET NAMES `cp1251`");
    $query="SELECT * FROM `order` WHERE `id`='$id'";

Спустя 5 минут, 4 секунды (28.07.2009 - 20:26) Kuliev написал(а):
Цитата (welbox2 @ 28.07.2009 - 22:21)
попробуй так:
PHP
while($row = mysql_fetch_array($result))
    { 
        if
(!isset($_POST['id'])) { $_POST['id'] = $id = $myrow_mail["id"]; }
        if(!isset($_POST['date'])) { $_POST['date'] = $date = $myrow_mail["date"]; }
        if(!isset($_POST['name'])) { $_POST['name'] = $name = $myrow_mail["name"]; }
        
        $link 
= "<a href='list2.php?id=".$id."'>".$word."</a>";
    }


PHP
if(isset($_GET['id'])) { $id = htmlspecialchars(stripslashes($_GET['id'])); }
    mysql_query ("SET NAMES `cp1251`");
    $query="SELECT * FROM `order` WHERE `id`='$id'";

Нука растолкуй что у тебя там в цикле происходит blink.gif

Спустя 5 минут, 29 секунд (28.07.2009 - 20:32) ANG3 написал(а):
Не понял.

Вот я создаю список с сылкой.
PHP
<?php
echo '<table class="table" width="70%" border="1" align="center">
  <tr>
    <td width="10%" align="center" valign="middle"><strong>ID</strong></td>
    <td width="10%" align="center" valign="middle"><strong>Дата</strong></td>
    <td width="80%" align="center" valign="middle"><strong>Название организации</strong></td>
  </tr>'
;
  
$word "просмотреть";
mysql_query ("SET NAMES `cp1251`");


$query "SELECT * FROM `order`";
$result=mysql_query($query) or die(mysql_error());

while (
$row=mysql_fetch_array ($result)) {  


$name=$row['name'];
$date=$row['date'];
$id=$row['id'];
$link "<a href='list2.php?id=".$id."'>".$word."</a>";
echo 
'<tr>
    <td height="23" align="center" valign="middle">'
.$id.'</td>
    <td align="center" valign="middle">'
.$date.'</td>
    <td align="center" valign="middle">'
.$name.'<br><br>'.$link.'</td>
  </tr>'
;
}


Прохожу по сылке, получаю подробное описание.

PHP
<?php
$id
=$_GET['id'];  
mysql_query ("SET NAMES `cp1251`");

$query="SELECT * FROM `order` WHERE `id`='$id'";
$result=mysql_query($query) or die(mysql_error());
while (
$row=mysql_fetch_array ($result)) {  
$name=$row['name'];
$email=$row['email'];
$tel=$row['tel'];
$address=$row['address'];
$order=nl2br($row['order']);
$date=$row['date'];
$inn=$row['inn'];

}
echo 
// использую переменные полученые из базы

Спустя 47 секунд (28.07.2009 - 20:33) Sylex написал(а):
Цитата (ANG3 @ 28.07.2009 - 22:34)
Как безопасно? хотябы намекните.


существует возможность SQL-инъекции. Данные пришедшие от пользователя нужно ВСЕГДА обрабатывать mysql_real_escape_string();

http://phpfaq.ru/slashes

Спустя 2 минуты, 12 секунд (28.07.2009 - 20:35) Kuliev написал(а):
ANG3
PHP
while ($row mysql_fetch_assoc($result)) 
{  
    echo 
"<a href='list2.php?id=".$row['id']."'>".$word."</a>";
}




Спустя 32 минуты, 32 секунды (28.07.2009 - 21:07) ANG3 написал(а):
PHP
$id=mysql_real_escape_string(trim(strip_tags($_GET['id'])));  
mysql_query ("SET NAMES `cp1251`");

$query="SELECT * FROM `order` WHERE `id`='$id'";



так пойдёт? wink.gif

Спустя 9 минут, 55 секунд (28.07.2009 - 21:17) Kuliev написал(а):
ЖЕСТЬ biggrin.gif

Спустя 9 минут, 23 секунды (28.07.2009 - 21:27) ANG3 написал(а):
biggrin.gif biggrin.gif А ещё у меня на хостинге magic_quotes_gpc= on

Это плохо или хорошо?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.