Старый 06.04.2007, 15:16   #1   
89036541967
 
Аватар для Dim_Z
 
Сообщений: 864
Регистрация: 09.07.2004
Возраст: 34

Dim_Z вне форума Не в сети
Вопрос php

Меню навигации состоит из $link=??????? ссылок, в центре страницы стоит скрипт include "$link.php", как сделать что бы не имея значения, $link автоматом менялась на "news/news.php".
  Ответить с цитированием
Старый 06.04.2007, 15:19   #2   
mutafakaz
 
Аватар для Alex Klimov
 
Сообщений: 5,602
Регистрация: 09.11.2002
Записей в дневнике: 104

Alex Klimov вне форума Не в сети
я тут что-то подобное уже спрашивал: http://www.u-antona.vrn.ru/forum/sho...d.php?t=173695
  Ответить с цитированием
Старый 06.04.2007, 15:40   #3   
89036541967
 
Аватар для Dim_Z
 
Сообщений: 864
Регистрация: 09.07.2004
Возраст: 34

Dim_Z вне форума Не в сети
не там ваще другое, мне надо просто скрипт
if ($link=)
{
$link="news/news";
}

но если переменаая не существует то что делать?
  Ответить с цитированием
Старый 06.04.2007, 16:17   #4   
xxCENSOREDxx
 
Сообщений: 983
Регистрация: 09.04.2006
Возраст: 45

alemiks вне форума Не в сети
проверять на существование
http://php.net/isset
  Ответить с цитированием
Старый 06.04.2007, 17:05   #5   
feelthebeat
 
Аватар для Breathe
 
Сообщений: 765
Регистрация: 20.09.2003
Возраст: 40

Breathe вне форума Не в сети
if (!$link) $link="news/news.php";
  Ответить с цитированием
Старый 06.04.2007, 17:26   #6   
Форумец
 
Аватар для Vital_N
 
Сообщений: 1,834
Регистрация: 04.04.2005

Vital_N вне форума Не в сети
Цитата:
Сообщение от Breathe
if (!$link) $link="news/news.php";
неверный код - если не определена $link
вылезет Notice

Dim_Z, слухай alemiksa )
  Ответить с цитированием
Старый 06.04.2007, 20:59   #7   
feelthebeat
 
Аватар для Breathe
 
Сообщений: 765
Регистрация: 20.09.2003
Возраст: 40

Breathe вне форума Не в сети
Жалко что ли? Пусть вылезает! Dim_Z слушай меня!
  Ответить с цитированием
Старый 06.04.2007, 21:26   #8   
Форумец
 
Сообщений: 3,705
Регистрация: 02.08.2006

svga вне форума Не в сети
а вообще - кто скажет зачем так делать? По моему, не очень гуд через переменные пути+файлы обозначать, да еще и вместе. Если по дефолту в новости надо, то не лучше ли чтобы переменная только $link="news" была? А там в директории выложить апачевский файл, который не index.php запускает, а news.php. Или я где-то от жизни отстал?
  Ответить с цитированием
Старый 07.04.2007, 08:18   #9   
+79038594250
 
Сообщений: 1,493
Регистрация: 31.01.2005
Возраст: 42

1000w вне форума Не в сети
бл..., топикстартер а ты задумывался что будет если я в строке браузера наберу: ?link=http://ya.ru/index
  Ответить с цитированием
Старый 07.04.2007, 08:59   #10   
89036541967
 
Аватар для Dim_Z
 
Сообщений: 864
Регистрация: 09.07.2004
Возраст: 34

Dim_Z вне форума Не в сети
Цитата:
if (isset($link))
{
$link="news/news";
}
include "$link.php"
выскакивает
Цитата:
Notice: Undefined variable: link in z:\home\localhost\www\index.php on line 29
[ убрать подсказку | никогда больше не показывать ]

Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.

Вы можете установить более слабый контроль ошибок одним из следующих способов:

* Впишите в скрипты строчку:

Error_Reporting(E_ALL & ~E_NOTICE);

Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
* Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:

php_value error_reporting 7

* Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!

[Денвер: показать возможную причину ошибки]
Warning: main(.php): failed to open stream: No such file or directory in z:\home\localhost\www\index.php on line 30

Warning: main(): Failed opening '.php' for inclusion (include_path='.;/usr/local/php/PEAR') in z:\home\localhost\www\index.php on line 30
а когда
Цитата:
if (!$link)
{
$link="news/news.php";
}
include "$link.php"
пишет только
Цитата:
Notice: Undefined variable: link in z:\home\localhost\www\index.php on line 25
[ убрать подсказку | никогда больше не показывать ]

Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.

Вы можете установить более слабый контроль ошибок одним из следующих способов:

* Впишите в скрипты строчку:

Error_Reporting(E_ALL & ~E_NOTICE);

Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
* Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:

php_value error_reporting 7

* Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!

[Денвер: показать возможную причину ошибки]ss
Но при 2-ом случае фаил импортирует.
  Ответить с цитированием
Старый 07.04.2007, 09:27   #11   
xxCENSOREDxx
 
Сообщений: 983
Регистрация: 09.04.2006
Возраст: 45

alemiks вне форума Не в сети
нужно !isset (если НЕ существует)
  Ответить с цитированием
Старый 07.04.2007, 10:39   #12   
xxCENSOREDxx
 
Сообщений: 983
Регистрация: 09.04.2006
Возраст: 45

alemiks вне форума Не в сети
Цитата:
Сообщение от 1000w
бл..., топикстартер а ты задумывался что будет если я в строке браузера наберу: ?link=http://ya.ru/index
а если ещё allow_url_include = On, то есть где разгуляться
  Ответить с цитированием
Старый 07.04.2007, 15:03   #13   
Форумец
 
Сообщений: 3,705
Регистрация: 02.08.2006

svga вне форума Не в сети
Цитата:
Сообщение от 1000w
бл..., топикстартер а ты задумывался что будет если я в строке браузера наберу: ?link=http://ya.ru/index
Ну если он получает $link = $_GET['link'], то что-нить интересное будет. А если не через строку передается, то в принципе не критично, но все равно не особо удачный вариант.
to Dim_Z - если не хочешь чтобы выскакивали ошибки некритичные (вроде неопределенной переменной), то перед переменной символ @ ставь. Напр. @$links.
alemiks ссылку и приводил как пользоваться, но видимо Dim_Z вы так и не прочитали, пример как пользоваться isset:
Цитата:
<?php
$var = '';
// This will evaluate to TRUE so the text will be printed.
if (isset($var)) {
echo "This var is set so I will print.";
}
// In the next examples we'll use var_dump to output
// the return value of isset().
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo)); // FALSE
?>
Итого можно расписать поподробнее про конкретный случай:
Цитата:
if (isset($links)==false)
{ $links='news/news.php'; }
include($links);
  Ответить с цитированием
Старый 07.04.2007, 15:19   #14   
+79038594250
 
Сообщений: 1,493
Регистрация: 31.01.2005
Возраст: 42

1000w вне форума Не в сети
Цитата:
Сообщение от svga
Ну если он получает $link = $_GET['link'], то что-нить интересное будет.
из его поста я так понял что навигация по сайту осуществляется с помощью как раз переменной $link которая определяется какраз из гет запроса.
  Ответить с цитированием
Старый 07.04.2007, 15:44   #15   
Форумец
 
Сообщений: 3,705
Регистрация: 02.08.2006

svga вне форума Не в сети
Цитата:
Сообщение от 1000w
из его поста я так понял что навигация по сайту осуществляется с помощью как раз переменной $link которая определяется какраз из гет запроса.
Тогда - ужоснах!
Причем примеры кода от Dim_Z, наводят на мысли что расширение ".php" подставляется уже в include();.
Цитата:
Сообщение от Dim_Z
if (isset($link))
{
$link="news/news";
}
include "$link.php"
Из-за этого у него косяки могут вылезти при использавании моего куска кода. " include "$link.php" " - это что-то =(. Наиболее правильно по синтаксису так, имхо, написать:

include($_SERVER["DOCUMENT_ROOT"]."/".$links.".php");
  Ответить с цитированием
Старый 07.04.2007, 15:51   #16   
89036541967
 
Аватар для Dim_Z
 
Сообщений: 864
Регистрация: 09.07.2004
Возраст: 34

Dim_Z вне форума Не в сети
svga, большое спасибо вам, всё работает.
Конечный вариант, если кому то пригодиться
Цитата:
<? if (isset($link)==false)
{ $link='news/news'; }
include "$link.php"
?>
  Ответить с цитированием
Старый 07.04.2007, 16:10   #17   
Форумец
 
Сообщений: 3,705
Регистрация: 02.08.2006

svga вне форума Не в сети
Цитата:
Сообщение от Dim_Z
svga, большое спасибо вам, всё работает.
Конечный вариант, если кому то пригодиться
Явно не пригодится =) Инклуд поправь как я выше написал, а то точно не успеешь сайт выложить как поломают его нафиг.
  Ответить с цитированием
Старый 08.04.2007, 09:38   #18   
xxCENSOREDxx
 
Сообщений: 983
Регистрация: 09.04.2006
Возраст: 45

alemiks вне форума Не в сети
вот тебе более безопасный вариант
Цитата:
$link = isset($_GET['link']) ? $_GET['link'] : 'news';

$validLinks = array('news', 'guestbook', 'forum');

if (!in_array($link, $validLinks)) { die('Bye'); }

include "$link.php";
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind