Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Динамические ссылки
 
 автор: Чайка   (15.02.2006 в 14:31)   письмо автору
 
 

Добрый день Господа! Прошу у Вас помощи, НЕМОГУ РАЗОБРАТЬСЯ КАК СТРОЯТЬСЯ ДИНАМИЧЕСКИЕ ССЫЛКИ подскажите принцип
<a href="index_например_два.php?ЧТО ЗДЕСЬ ПИШЕТСЯ ДАЛЬШЕ?"> Ссылка</a> 

С уважением Чайка.

   
 
 автор: cheops   (15.02.2006 в 14:45)   письмо автору
 
   для: Чайка   (15.02.2006 в 14:31)
 

А какая цель ссылки? Что вы хотите сделать при помощи её?

   
 
 автор: Чайка   (15.02.2006 в 16:45)   письмо автору
 
   для: cheops   (15.02.2006 в 14:45)
 

Есть две таблицы tab1 и tab2. Созданы в MySQL. Первичные ключи id_tab1 и id_tab2 соответственно. Первая таблица оглавление, вторая статьи. Оглавление в виде ссылок выводиться в цикле в index.php. Как сослаться на index_2.php чтобы выводилась соответствующая статья по этой ссылке в файле index_2.php?

   
 
 автор: Loki   (15.02.2006 в 16:59)   письмо автору
 
   для: Чайка   (15.02.2006 в 16:45)
 

Я бы засунул все в одну таблицу...
Но раз вы хотите...

index.php?id_tab2=номер статьи


а в файле index.php

$sql="SELECT * FROM  tab2 WHERE  id_tab2= $id_tab2";


Код не защищен, так что в реальном приложении так лучше не делать.

   
 
 автор: Чайка   (16.02.2006 в 12:29)   письмо автору
 
   для: Loki   (15.02.2006 в 16:59)
 

Спасибо! Все просто и понятно.
PS: А как защитить код? Как делается в реальном приложении?
С уважением Чайка.

   
 
 автор: Loki   (16.02.2006 в 12:47)   письмо автору
 
   для: Чайка   (16.02.2006 в 12:29)
 

ничего сверхъестественного: просто аккуратно проверяются все данные входящие от пользователя (POST, GET, COOKIE) на соответсвие тому, что от них ожидают.

http://www.softtime.ru/info/articlephp.php?id_article=35
http://www.softtime.ru/info/articlephp.php?id_article=36

   
 
 автор: Trianon   (16.02.2006 в 12:49)   письмо автору
 
   для: Чайка   (16.02.2006 в 12:29)
 

в реальном приложении нужно много о чем думать.... Например, предотвращать SQL-инъекции, то есть попытки под видом номера статьи дописать в хвост SQL-оператора продолжение запроса, которое выведет на страницу закрытую информацию, изменит данные в таблице или сотворит еще какую нибудь пакость.
В Вашем случае, самый простой способ - написать что-то вроде

$id_tab2 = 0 + $id_tab2;
$sql="SELECT * FROM  tab2 WHERE  id_tab2= $id_tab2"; 

Такая конструкция, как минимум, уберет нечисловые данные из значения в заголовке запроса.

   
 
 автор: Чайка   (16.02.2006 в 13:09)   письмо автору
 
   для: Trianon   (16.02.2006 в 12:49)
 

Спасибо! А может так?

“данные=htmlspecialchars(новые данные)” 

   
 
 автор: Loki   (16.02.2006 в 13:13)   письмо автору
 
   для: Чайка   (16.02.2006 в 13:09)
 

так в этом случае запрос к БД все равно вызовет ошибку... придет-то текст, там где ожидается число.

   
 
 автор: Чайка   (16.02.2006 в 13:29)   письмо автору
 
   для: Loki   (16.02.2006 в 13:13)
 

Понятно! Подскажите, а в данной записи $id_tab2 = 0 + $id_tab2; речь идет о принадлежности переменной к типу данных?

   
 
 автор: Trianon   (16.02.2006 в 14:22)   письмо автору
 
   для: Чайка   (16.02.2006 в 13:29)
 

>Понятно! Подскажите, а в данной записи $id_tab2 = 0 +
>$id_tab2; речь идет о принадлежности переменной к типу
>данных?
да, можно сказать и так.

   
 
 автор: essenia   (15.02.2006 в 16:18)   письмо автору
 
   для: Чайка   (15.02.2006 в 14:31)
 

Если имеется ввиду ссылка типа
<a href="index.php?action=rm">1</a>
//здесь описано что файлу такому-то (index.php) выбрать действие согласно ключу rm, файл может быть любой :-)
то пишем следующее либо в отдельном файле либо в самом индексе:

<?php
switch($_GET['action']) {
// переменная Get может быть и POST смотрите что сервер хостера понимает
   
case "nb" :
//это ключи для определения вариантов действия
      
require_once("a.php");
//соответственно само действие
   
break;
//выход если совпадения с этим вариантом не наблюдается и команда перехода к следующему варианту
   
case "nb1" :
      require_once(
"d.php");
   break;
   case 
"compl" :
      require_once(
"c.php");
   break;
     case 
"access" :
      require_once(
"access.php");
   break;
    case 
"rm" :
      require_once(
"1.php");
   break;
     case 
"drv" :
      require_once(
"7.php");
   break;
     case 
"mail" :
      require_once(
"mail.php");
   break;
    default : print 
"Данных нет";
   break;
}
?>


Но учтите если это будет отдельный файл то в круглых скобках путь придеться писать полностью,
т.е с каталогами, смотрите как сервер хостера поймет (некоторые хотят от корня сайта почему-то)

   
 
 автор: Чайка   (16.02.2006 в 12:33)   письмо автору
 
   для: essenia   (15.02.2006 в 16:18)
 

Спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования