RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 395
от 10.07.2006, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 314, Экспертов: 41
В номере:Вопросов: 7, Ответов: 24


Вопрос № 48163: Здравствуйте. Я хотел бы узнать как делаются такие ссылки: Например, index.php?search, или http://rusfaq.ru/?Step=ask&ID0=5&ID1=3&ID2=22 ну & мне понятно, он связывает ссылку, а где находится это? и вабще, как это делать? прошу подскожит...
Вопрос № 48166: В прошлом вопросе (48163) я немного не коректно задал вопрос. Я имел ввиду не то, как это написать. А где эти страницы находятся. С обычной ссылком мне все понятно (rusfaq.ru/index.html) а вот как сделать у себя на сайте такую фишку: mysite.ru/?d...
Вопрос № 48218: Есть сайт с некой структурой: www.site.ru/papka1, www.site.ru/papka2, и т.д. Для каждой папки через .htaccess определён индексный файл: index.html. Если набрать www.site.ru/papka1.index.html - будет выведено содержимое файла, формирующееся ди...
Вопрос № 48240: Здраствуйте, вопрос такой: Существует шаблон страници, у которого имеются вставки <<content>> и <<title>> , в них из РНР страници (страница в которую подключён шаблон) передаются html-страници, в результате получается ста...
Вопрос № 48247: Доброго времени суток All. Народ подскажите что за фигня... вобщем есть два скрипта первый файл form.html <html> <head> <title></title> </head> <body> <form actio...
Вопрос № 48268: Здраствуйте эксперты. Появилось несколько маленьких вопросиков, которые не застявят труда мне ответить: 1) - объясните простым языком, как применять и как вообще действует функция isset() 2) - я часто видел что в коде используют сим...
Вопрос № 48273: Как определить CY и PR средствами PHP. Где об этом можно почитать?...

Вопрос № 48.163
Здравствуйте. Я хотел бы узнать как делаются такие ссылки:
Например, index.php?search, или
http://rusfaq.ru/?Step=ask&ID0=5&ID1=3&ID2=22
ну & мне понятно, он связывает ссылку, а где находится это? и вабще, как это делать? прошу подскожите, не учить же из-за ссылок весь php. :)
Отправлен: 04.07.2006, 22:51
Вопрос задал: Bios (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Bios!

А делается это так:

<form action="http://rusfaq.ru" metod=get>
<input type=input name=Step>
<input type=input name=ID0>
<input type=input name=ID1>
<input type=input name=ID1>
<input type=submit>
</form>

Если Вы запустите это в браузере вы увидите 4 поля для ввода данных и кнопку. Если Вы введёте в поля значения: ask, 5, 3, 22 и нажмёте на кнопку, тогда ссылка будет именно такая какую Вы указали.

С уважением,
Антон Цепковский.

---------
Вся наша жизнь - RPG
Ответ отправил: Цепковский Антон Сергеевич (статус: 2-ой класс)
Ответ отправлен: 04.07.2006, 23:20

Отвечает: Alexey Vilchinsky
Здравствуйте, Bios!
делается очень просто - ты можешь сам создать подообного рода ссылку
Например, <a href='www.mail.ru?a=1&b=2'>привет</a>
Есть другой способ:
надо создать на странице форму. При оправке формы будет сформирован такой же адрес,
где первые параметры - имена полей формы, а вторые - значения этих полей. (но такое работает) только для метода передачи GET. При отправке методом POST ты в строке адреса не увидишь никаких параметров.
---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: 10-ый класс)
Ответ отправлен: 04.07.2006, 23:22

Отвечает: Mark_by
Здравствуйте, Bios!
Разберём подроюно ссылку http://rusfaq.ru/?Step=ask&ID0=5&ID1=3&ID2=22
Этот способ передачи данных называется get. Здесь ?(знак вопроса) говорит о существовании переменной со значением ask, далее символ & добавляет ещё одну переменную (ID1) со значением 38, опять же сново символ & добавляет ещё одну переменную (ID2) со значением 22. Запрос вида index.php?ID=2&type=ask пошлёт странице index.php пременную ID равную 2 и переменную type равную ask.
Надеюсь объяснил всё понятно.
---------
Тысячи путей ведут к заблуждению, к истине только один. (Ж. Руссо)
Ответ отправил: Mark_by (статус: 1-ый класс)
Ответ отправлен: 05.07.2006, 09:33


Вопрос № 48.166
В прошлом вопросе (48163) я немного не коректно задал вопрос. Я имел ввиду не то, как это написать. А где эти страницы находятся. С обычной ссылком мне все понятно (rusfaq.ru/index.html) а вот как сделать у себя на сайте такую фишку:
mysite.ru/?download=id12713
и эта ссылка должна идти на страницу или программу. И при этом работать. То есть куда надо поместить эту программу или страницу, и как это все сделать,. Может для этого нужна база данных? А может я непонятно опять объясняю?
Отправлен: 04.07.2006, 23:34
Вопрос задал: Bios (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Bios!

На самом деле, mysite.ru/?download=id12713 это почти тоже самое, что mysite.ru/index.php?download=id12713
На сервер приходит запрос mysite.ru/?download=id12713, а он открывает файл по умолчанию из mysite.ru/ , а ему передает параметры ?download=id12713, а сам файл (будем считать index.php) проверяет значение переменных, и в зависимости от результатов проверки выводит разные страницы, или пишет разный текст.

По простому что-то типа такого:


switch ($_GET["download"]) {
case ("123456"):
echo('Файл не доступен');
break;
case ("111"):
include('file.html');
break;
default:
echo 'Вы ошиблись';
}


Удачи!
---------
Ответы на все вопросы - на сайте www.ya.ru
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 05.07.2006, 00:30
Оценка за ответ: 5

Отвечает: Mark_by
Здравствуйте, Bios!
Вот пример страницы index.php, которая является главной страницой, если послать запрос например так http://mysite.ru/?articles.php, то откроется страница articles.php, если же запрос оставить пустым (просто http://mystite.ru), то загрузится страница main.php, на основе примера можно ведь настроить, чтобы открывалась страница, допустим, downloads.php с параметром id12713, я думаю теперь вы сами сможете разобраться дальше.

Приложение:

---------
Тысячи путей ведут к заблуждению, к истине только один. (Ж. Руссо)

Ответ отправил: Mark_by (статус: 1-ый класс)
Ответ отправлен: 05.07.2006, 09:33

Отвечает: PVS
Здравствуйте, Bios!
По умолчанию такая ссылка передаст параметр "download" со значением "id12713" скрипту, который находится по адресу http://mysite.ru/ . Там может быть PHP-скрипт, а может быть что-то другое (CGI например) и оно должно знать как себя вести при получении такого параметра (выбирать что-то из базы данных или искать какой-то файл на диске - варианты зависят от фантазии разработчика). Еще можно поэкспериментировать с настройками в файле .htaccess и добится того, что сервер будет преобразовывать такие ссылки в имена файлов самомтоятельно (без PHP, CGI, ASP или чего-то еще)
Ответ отправил: PVS (статус: 7-ой класс)
Ответ отправлен: 05.07.2006, 10:15


Вопрос № 48.218
Есть сайт с некой структурой: www.site.ru/papka1, www.site.ru/papka2, и т.д.
Для каждой папки через .htaccess определён индексный файл: index.html.
Если набрать www.site.ru/papka1.index.html - будет выведено содержимое файла, формирующееся динамически.
На самом деле, в этих папках есть только файлы с описанием содержимого (шаблоны), и стоит обработчик ошибок, который в зависимости от запрошенного имени файла выдаёт тот или иной файл, который формируется исходя из содержимого файлов описания (положенный в каждой папке).
Проблема:
Если пользователь набирет "www.site.ru/papka1/index.html" (или всё равно, какой файл) - выдаётся файл формирующийся динамически, а если набрать "www.site.ru/papka1" (без файла) - выводится содержимое директории (ведь файла "index.html" физически нет).
Вопрос: как сделать так, что бы при запросе папки (без указания файла) выводилось то же, что и при запросе папки с файлом?
(Т.е. как обмануть систему, и заставить принудительно обращаться к файлу index.html (котрого физически нет)?)
Отправлен: 05.07.2006, 12:09
Вопрос задал: Php23 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Андрей_26rus
Здравствуйте, Php23!
можно создать файл index.php

<?
header ("Location: http://www.site.ru/papka1/index.html");
?>

P.S. главное чтобы он был прописан в Apache в строке с дефолтными индексами

---------
- = Tertium non datur = -
Ответ отправил: Андрей_26rus (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 12:21

Отвечает: Cimus
Здравствуйте, Php23!
Для этого Вам нужно в файле .htaccess прописать имя файла по-умолчанию,
тоесть в стандартных настройках веб-сервера по-умолчанию стоит index.php, а Вы можете поменять на любой файл каторый Вам нужен, если веб сервер не находит в папке дефлтного файла (index.php) то он просто показывает содержимое папки т.к. незнает какой файл нужно показать.

Директива DirectoryIndex фала .htaccess - изменения страницы по умолчанию (стартовой)
Описание: Позволяет изменить страницу, которая будет показываться при обращении к директории
Синтаксис: DirectoryIndex page [page]
page - название стартовой страницы. Может быть указано несколько страниц.
Пример:

DirectoryIndex main.html index.php test.shtml

---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 22:26


Вопрос № 48.240
Здраствуйте, вопрос такой:
Существует шаблон страници, у которого имеются вставки <<content>> и <<title>> , в них из РНР страници (страница в которую подключён шаблон) передаются html-страници, в результате получается стандартная страница с контентом и тайтолом, который у каждой страници свой. Как описывается присвоение определенных документов этим тайтлам и контентам... это очень удобно, но я ещё не понял, как это реализовать. Надеюсь вы поняли мой вопрос, хотя я невнятно его выразил.(Я его понял(ворос))
Отправлен: 05.07.2006, 15:58
Вопрос задал: PetrKi. (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, PetrKi.!
Например так:
$template=array()
function AddPage($Title,$ContentFile){
$item=array();
$item['title']=$Title;
$item['cfile']=$ContentFile;
}

AddPage('Главная траница', 'pages/main.html');
AddPage('О компании', 'pages/about.html');
AddPage('Обратная связь', 'pages/contact.html');
AddPage('Продукция', 'pages/products.html');

echo $template[1]['title']; //Выведет "О компании"
можно также базу данных задействовать
Ответ отправил: PVS (статус: 7-ой класс)
Ответ отправлен: 05.07.2006, 16:12

Отвечает: Physicist
Здравствуйте, PetrKi.!

Надеюсь, что я правильно понял Ваш вопрос.
Сначала нужно получить текст шаблона и html-страниц:
| $page = file_get_contents('template.htm');
| $title = file_get_contents('title.txt');
| $content = file_get_contents('content.txt');
а затем сделать замены
| $page = str_replace('<<title>>', $title, $page);
| $page = str_replace('<<content>>', $content, $page);
и вывести $page
| echo $page
Ответ отправил: Physicist (статус: 3-ий класс)
Ответ отправлен: 05.07.2006, 16:17

Отвечает: XMF
Здравствуйте, PetrKi.!
--
$title = "some title";
$content = "some content";
$result=str_replace("<<<title>>>", $title, str_replace("<<<content>>>", $content, join("", file("template.tpl"))));
echo $result;
Ответ отправил: XMF (статус: 6-ой класс)
Ответ отправлен: 05.07.2006, 16:21

Отвечает: Red Devil
Здравствуйте, PetrKi.!
Технология простая, как два байта переслать.

Всю инфу записывают в БД (обычно MySQL) с присвоением уникальных идентификаторов.

Затем создают шаблон страницы:
//1
<?php
$id = 1;
$subid = 2;

include "top.php";
include "base.php";
include "bottom.php";
?>

В top.php пишут, что-то типа:
//2
<html>
<head>
<title>
<?php
echo get_title_by_id($id, $subid);
?>
</title>
</head>

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

Приложение:

---------
Есть 10 типов людей: те, кто знаком с двоичной системой, и те, кто нет.

Ответ отправил: Red Devil (статус: Студент)
Ответ отправлен: 05.07.2006, 19:20
Оценка за ответ: 4
Комментарий оценки:
ответ средний... я ежедневно имею дело с <> и <>, они расположены в шаблоне. А в РНР-файле, в котором осуществлено подключение этого шаблона, написано что-то вроде этого:
$tdf=peremennayax['content']=(./contents/content6.html);


Вопрос № 48.247
Доброго времени суток All.
Народ подскажите что за фигня... вобщем есть два скрипта
первый файл form.html

<html>

<head>
<title></title>
</head>

<body>
<form action = index.php>
<input type = text name = "name" value="Неизвестно"><br>
<input type = text name = "age" value ="Неизвестно"><br>
<input type = submit name = "b1" value = "Старт">
</body>

</html>
и второй index.php

<html>

<head>
<title></title>
</head>

<body>
<?php
echo "Ваше имя $name <br> И вам лет $age";
?>

</body>

</html>

Дак вот почемуто в index.php при запуске неподставляется значения переменных которые передаються формой ... почему такое может быть .... оба докумсента лежат в DocumentRoot. Заранее спасибо.
Отправлен: 05.07.2006, 16:27
Вопрос задал: Александер (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Physicist
Здравствуйте, Александер!

Скорее всего, у тебя отключено register_globals в php.ini.
Попробуй добавить в начало php-кода
| $name=$_POST['name'];
| $age=$_POST['age'];
Ответ отправил: Physicist (статус: 3-ий класс)
Ответ отправлен: 05.07.2006, 16:35
Оценка за ответ: 5

Отвечает: Madproger
Здравствуйте, Александер!

День добрый.
Скорее всего потому что у тебя отключен register_global, а твой скрипт расчитан на то что он включен.

ЧТобы заработало попробуй вместо
echo "Ваше имя $name <br> И вам лет $age";
набрать следующее
printf("Ваше имя %s <br /> И вам %s лет", $_POST['name'], $_POST['age']);
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 8-ой класс)
Ответ отправлен: 05.07.2006, 16:37
Оценка за ответ: 5

Отвечает: PVS
Здравствуйте, Александер!
Очевидно скрипт расчитан на присутствие настройки register_globals=On в php.ini или на php3. В php4 и старше эта настройка по умолчанию Off. Если учетесь на локальном компьютере - поменяйте на On, для реальных серверов такое изменение не рекомендуется по соображениям безопасности. Для использования второго скрипта при существующих настройках просто поменяйте
$name на $_REQUEST['name']
$age на $_REQUEST['age']
Ответ отправил: PVS (статус: 7-ой класс)
Ответ отправлен: 05.07.2006, 16:41
Оценка за ответ: 5

Отвечает: Alexey Vilchinsky
Здравствуйте, Александер!
скорее всего у вас в настройках сервера отключены глобальные переменные.
попробуйте сделать так:
$name=$_GET['name'];
$age=$_GET['age'];
в начале index.php
либо включите global_variables в настройках apache

---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: 10-ый класс)
Ответ отправлен: 05.07.2006, 17:21
Оценка за ответ: 5

Отвечает: Cimus
Здравствуйте, Александер!
А можно сделать вот так
<?php
print "Ваше имя $_POST['name'] <br> И вам лет $_POST['age']";
?>

---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 22:31

Отвечает: Ballon
Здравствуйте, Александер!

Попробуйте так:

<?php
echo "Ваше имя $_GET['name'] <br> И вам лет $_GET['age']";
?>

---------
Хочу все знать...
Ответ отправил: Ballon (статус: 7-ой класс)
Ответ отправлен: 06.07.2006, 07:52


Вопрос № 48.268
Здраствуйте эксперты. Появилось несколько маленьких вопросиков, которые не застявят труда мне ответить:

1) - объясните простым языком, как применять и как вообще действует функция isset()

2) - я часто видел что в коде используют символ "@", но я не знаю для чего, объясните пожалуста (если можно с маленькими примерами)

3) - я видел (вот даже на этом сайте) есть кнопочки но они выглядят не как в интерфейсе Windows а вообще другие (у них есть фон, цвет текста другой, рамка другая и прочее), если нетрудно расскажите как это сделано
Отправлен: 05.07.2006, 19:12
Вопрос задал: _SanS_ (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, _SanS_!
1) Функция isset позволяет проверить, существует ли определённая переменная, т.е. занята ли соответствующая области памяти под определённое значение. Используется просто: isset($varname) - выдаст true, если переменная $varname определена. С помощью этой функции удобно делать разбор адресной строки (метод GET).
2) @command используется для того, чтобы отключить вывод сообщений (ошибок/предупреждений) для конкретной команды. Обычно ошибки включаются/отключаются командой error_reporting(), а это - просто для удобства, работает только для конкретной команды.
3) Наверное с помощью CSS: background-color, border-color, border и т.д. Во всяком случае, откройте html-код страницы с такой кнопкой и посмотрите, как это сделано.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 05.07.2006, 19:23

Отвечает: Alexey Vilchinsky
Здравствуйте, _SanS_!
1) isset($var) проверяет, существует ли вообще переменная $var
2) @ запрещает интерпретатору выводить в браузер сообщение об ошибке в случае неправильного выполнения функции
3) вид кнопочек задается с помошью стилей(фон, обрамление, стиль текста и его расположение). Чтобы было более понятно предлагаю вам почитать про css (каскадные таблицы стилей)
---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: 10-ый класс)
Ответ отправлен: 05.07.2006, 19:46

Отвечает: Ballon
Здравствуйте, _SanS_!

1)Функция isset() проверяет существует ли переменная, например:

if isset($a){
echo "Существует";
}else{
echo "Несуществует";
}

2)PHP поддерживает одну операцию управления ошибками: знак (@). Если он вставлен как префикс выражения PHP, любые ошибки, которые могут генерироваться этим выражением, подавляются.
-операция работает только в выражениях. Основное правило: если вы можете получить значение чего-нибудь, вы можете поставить в качестве префикса операцию @. Например, вы можете поставить её к переменным, функциям и вызовам include(), константам и т.д. Вы не можете подставить её к определению функции или класса или структурам управления.

3) Например так:
<input type="button" style=""border:" solid 1px black; background: Red;">


---------
Хочу все знать...
Ответ отправил: Ballon (статус: 7-ой класс)
Ответ отправлен: 06.07.2006, 08:06

Отвечает: PVS
Здравствуйте, _SanS_!
1)функция isset проверяет присваивалось ли какой-то переменной ЛЮБОЕ значение, даже 0, например следующий код
<?
$error=0;
if(!$error){echo "No error ";}else{echo "Error! ";};
if(!$error2){echo "No error2";}else{echo "Error2! ";};
if(!isset($error)){echo "Error unset ";}else{echo "Error set! ";};
if(!isset($error2)){echo "Error2 unset ";}else{echo "Error2 set! ";};
?>
выдаст
No error
No error2
Error set!
Error2 unset

Чаще всего isset применяется для проверки передавался какой-то параметр или нет isset($_REQUEST['param1']) но возможно ОГРОМНОЕ множество других случаев ее использования.

2) @ используется для подавления вывода сообщений об ошибке. Допустим есть ситуция в которой заранее известна возможная ощибка, например открываемый файл недоступен:
$flines=@file('/my/data/file');
if(!$flines)echo "Файл недоступен";
а если написать без @ то в придачу получите еще и сообщение от PHP что в таком-то файле в такой-то строке случилась ошибка (если это не отключено в php.ini)
Ответ отправил: PVS (статус: 7-ой класс)
Ответ отправлен: 06.07.2006, 10:25


Вопрос № 48.273
Как определить CY и PR средствами PHP.

Где об этом можно почитать?
Отправлен: 05.07.2006, 20:16
Вопрос задал: Alexorg (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Cimus
Здравствуйте, Alexorg!
Для этого нужно отправить GET запросс в яндекс и гугл и выдернуть нужные данные из странички ответа.
Если Вам нужен этот скрипт, то напишите мне в почту s_ageev@ mail.ru.
---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 22:37

Отвечает: Jeka911
Здравствуйте, Alexorg!

Для PR: http://www.phpclasses.org/browse/package/2682.html
http://www.pagerank-without-toolbar.com/
---------
Шахтер - чемпион!!!
Ответ отправил: Jeka911 (статус: 6-ой класс)
Ответ отправлен: 06.07.2006, 03:19


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное