На этом месте находится расчудесная шапка. Включите flash - не пожалеете!

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> из Php4 в Php5, перевод
Smoke
сообщение 6.5.2008, 16:01
Сообщение #1


Турист
*

Группа: Пользователи
Сообщений: 16
Регистрация: 14.9.2006

Пользователь №: 1 126



Репутация:   0  


Всем привет!
Помогите пожалуйста перевести кусок кода из PHP4 в PHP5.

Код


----code html----

<?php
if ($pg=="") {
include ("pg/my.php");
}
else {
include ("pg/$pg.php");
}
?>

----code html----

<a href="/?pg=silka">Ссылка</a>



При таком коде на PHP5 не срабатывает ссылка.


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
liw
сообщение 6.5.2008, 17:01
Сообщение #2


Житель
***

Группа: Модераторы
Сообщений: 283
Регистрация: 2.11.2007

Пользователь №: 6 760



Репутация:   20  


а с чего вы взяли что дело в версии PHP ?

просто у вас в PHP5
REGISTER_GLOBALS = Off

обращатся надо так $_GET['pg'] а не просто $pg или включить REGISTER_GLOBALS/

хотя просто так использовать то что пришло в URL, ничего не проверяя, я вам как бы сказать.. , -
не советую.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SteAlzzer
сообщение 6.5.2008, 17:04
Сообщение #3


Турист
*

Группа: Пользователи
Сообщений: 60
Регистрация: 4.4.2008

Пользователь №: 12 943



Репутация:   0  


Код
----code html----

<?php
if ($pg=="") {
include ("pg/my.php");
}
else {
include ("pg/$pg.php");
}
?>

----code html----

<a href="?pg=silka">Ссылка</a>

Просто знак / мешает нормальному сробатыванию ссылки. Ток не думай, что это и есть перевоплощение PHP4 в PHP5. То, что ты его убираешь, не имеет ничего общего с языком PHP, ибо PHP у тебя заканчивается на " ?> "

И, если не ошибаюсь, в 8 строчке знак $ не нужен и будет катигорически всему мешать. Ну или будет все путем, если в папке pg есть файл с именем $pg.php, что, как я понимаю, маловероятно))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
liw
сообщение 6.5.2008, 17:05
Сообщение #4


Житель
***

Группа: Модераторы
Сообщений: 283
Регистрация: 2.11.2007

Пользователь №: 6 760



Репутация:   20  


Да, а теперь ждём автора что бы понять что значили слова:
Цитата
При таком коде на PHP5 не срабатывает ссылка.


Цитата
И, если не ошибаюсь, в 8 строчке знак $ не нужен и будет катигорически всему мешать. Ну или будет все путем, если в папке pg есть файл с именем $pg.php, что, как я понимаю, маловероятно))

Ну почему же, - там же двойные кавычки.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SteAlzzer
сообщение 6.5.2008, 17:06
Сообщение #5


Турист
*

Группа: Пользователи
Сообщений: 60
Регистрация: 4.4.2008

Пользователь №: 12 943



Репутация:   0  


Ну или в первом я ошибаюсь... Но что-либо должно сработать.

К томуже, эту операцию можно сделать качественно через case, а не через if-else
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
liw
сообщение 6.5.2008, 17:07
Сообщение #6


Житель
***

Группа: Модераторы
Сообщений: 283
Регистрация: 2.11.2007

Пользователь №: 6 760



Репутация:   20  


Цитата(SteAlzzer @ 6.5.2008, 18:06) *

Ну или в первом я ошибаюсь... Но что-либо должно сработать.


Как раз во втором)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SteAlzzer
сообщение 6.5.2008, 17:13
Сообщение #7


Турист
*

Группа: Пользователи
Сообщений: 60
Регистрация: 4.4.2008

Пользователь №: 12 943



Репутация:   0  


Растолкуй, пожалуйста, почему бует правильно постановка $ перед именем файла? Я просто не такой уж и большой опыт имею в том или ином языке програмирования, начал с PHP, да и не все еще понимаю.

Но, насколько далеки мои догадки, то винда не разрешает использование знака $ в имени файла - раз.
Если стоит $, значит последующее название есть ни что иное, как переменная. Но в этой строчке... Ну язык не поймет нужную переменную, так как она ничем не выделена. Тобишь, получается переменная $pg.php. Насколько понимаю, переменные так не задаются, да и в путях они наврядтли присутствуют - два.

Мои аспекты ошибочны?smile.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
liw
сообщение 6.5.2008, 17:22
Сообщение #8


Житель
***

Группа: Модераторы
Сообщений: 283
Регистрация: 2.11.2007

Пользователь №: 6 760



Репутация:   20  


Так как двойные кавычки то php воспринимает конструкцию $pg как переменную а не как строку,
даже не смотря на то что перед ней / а после точка (.) => /$pg.

Если включена директива REGISTR_GLOBALS то все данные которые приходя из URL (GET) или POST (поля форм например) становятся переменными.

То есть:
если перейти на страницу index.php?pg=value то мы в скрипте получим переменную $pg значение которой будет 'value'.

Вот у автора так и сделано что то типа если URL вида index.php?pg=registration то в срипте подключается файл registration.php из папки pg/ только при влключенной REGISTER_GLOBALS

Ну да конечно там если файла не будет то будет ошибка и т.д. и т.п.

Вот я и написал чтоб использовал если так уж хочется
include ("pg/".$_GET['pg'].".php");

ну и проверять тоже надо конечно там if($_GET['pg']=="") ... < - это если как у автора.

Вот.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SteAlzzer
сообщение 6.5.2008, 17:54
Сообщение #9


Турист
*

Группа: Пользователи
Сообщений: 60
Регистрация: 4.4.2008

Пользователь №: 12 943



Репутация:   0  


Хм... Спасибо. На досуге как-нить поэксперементирую...
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Smoke
сообщение 7.5.2008, 6:27
Сообщение #10


Турист
*

Группа: Пользователи
Сообщений: 16
Регистрация: 14.9.2006

Пользователь №: 1 126



Репутация:   0  


Всем спасибо, особенно liw! Я разобрался в своей ошибке.

А как бы теперь его организовать через case?


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SteAlzzer
сообщение 7.5.2008, 13:50
Сообщение #11


Турист
*

Группа: Пользователи
Сообщений: 60
Регистрация: 4.4.2008

Пользователь №: 12 943



Репутация:   0  


Код
<?
switch($_GET['pg'])  {

    case 'ssilka': //если ссылка содержит ?pg=ssilka
        include('pg/$pg.php');
    break;

    /*case 'sth':
        что-либо выполняется;
    */

    default: //Если pg=ничему или тупо ее нет
        include ('pg/my.php'); //то инклюдитья обычная страница
}
?>


Пожалуйста.
Только чисто совет: испльзуй нормальные названия ссылок, старайся избегать транслит и использовать слова на английском или сокращения. Например, здесь бы заменил ssilka на link))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Smoke
сообщение 7.5.2008, 15:22
Сообщение #12


Турист
*

Группа: Пользователи
Сообщений: 16
Регистрация: 14.9.2006

Пользователь №: 1 126



Репутация:   0  


Вот что получилось

<?php

switch($_GET['pg']) {

case 'link':
include ("pg/".$_GET['pg'].".php");
break;

case 'link':
include ("pg/".$_GET['pg'].".php");
break;

case 'link':
include ("pg/".$_GET['pg'].".php");
break;

case 'link':
include ("pg/".$_GET['pg'].".php");
break;

default:
include ('pg/my.php');
}
?>


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
liw
сообщение 7.5.2008, 15:57
Сообщение #13


Житель
***

Группа: Модераторы
Сообщений: 283
Регистрация: 2.11.2007

Пользователь №: 6 760



Репутация:   20  


какой смысл обращатся к массиву постоянно ?

switch($_GET['pg']) {

case 'link':
include ("pg/".$_GET['pg'].".php");
break;
}

то есть если case 'link' то и писать уже бы include ("pg/link.php");
ну это так к слову, я не настаиваю. )

а вообще проще так тогда уже:

$links = array('registration','about','blablabla'); //сюда добавляете файлы которые могут быть подлючены
include_once('pg/'.(in_array(@strval($_GET['pg']),$links)?$_GET['pg']:'my').'.php'));

а ещё посмотрите в FAQ в этом разделе.
и последнее: тема про case уже есть на форуме, сначало пользовались бы поиском..
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Smoke
сообщение 18.5.2008, 20:55
Сообщение #14


Турист
*

Группа: Пользователи
Сообщений: 16
Регистрация: 14.9.2006

Пользователь №: 1 126



Репутация:   0  


Привет! Еще один вопрос:

На php5 не работает скрипт, помогите найти причину!

Код

<?
include("meta_conf.php"); //Имеется файл с параметрами ($author; $keyworlds)

if ($update == "")
{
?>

<?
echo "
<form action='?adm=meta_teg ' method=post>
<br>Авторский состав:</font><input type=text name=author_ value=\"$author\" size=33>
<br>Ключевые слова:</font><input type=text name=keyworlds_ value=\"$keyworlds\" size=33>
name=meta_sitename_ value=\"$meta_sitename\" size=33>
<br><input type=submit name=action value=\"Обновить/Применить\"><br>
";
}

if ($action == "Обновить/Применить")
{
  $a_update_config  = "<?\n";
  $a_update_config .= "\$author = \"$author_\";\n";
  $a_update_config .= "\$keyworlds = \"$keyworlds_\";\n";

  $a_update_config .= "?>";

  $u_update_config = fopen("meta_conf.php","w+");
  $a_update_config = ereg_replace("\\\'","&quot;",$a_update_config);
  $a_update_config = ereg_replace('\\\"','&quot;',$a_update_config);
  $a_update_config = str_replace('&lt;',"<",$a_update_config);
  $a_update_config = str_replace('&gt;',">",$a_update_config);
  fputs ($u_update_config,$a_update_config);
  $update = "okey";
}

if ($update == "okey")
{
echo "
<br><b>Параметры успешно обновленны нажмите на разделе с настройкой <a href=meta_teg>Нажмите СЮДА</a></b>";
}
?>


Смысл кода, в том, что имеется файл meta_conf.php в котом есть параметры $author и $keyworlds. Через форму они должны заменяться.


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
liw
сообщение 19.5.2008, 13:59
Сообщение #15


Житель
***

Группа: Модераторы
Сообщений: 283
Регистрация: 2.11.2007

Пользователь №: 6 760



Репутация:   20  


Что значит не работает?

Выше сто раз сказали что дело не в версии php.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SteAlzzer
сообщение 19.5.2008, 19:47
Сообщение #16


Турист
*

Группа: Пользователи
Сообщений: 60
Регистрация: 4.4.2008

Пользователь №: 12 943



Репутация:   0  


liw, позволь я сам найду ошибку, чисто для повышения практики, а ты скажешь, прав я или нет)) Просто чутук попозже, через минут 15-20.
Smoke, а че пишет, когда откурываешь страницу?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Smoke
сообщение 19.5.2008, 20:35
Сообщение #17


Турист
*

Группа: Пользователи
Сообщений: 16
Регистрация: 14.9.2006

Пользователь №: 1 126



Репутация:   0  


Цитата(liw @ 19.5.2008, 14:59) *

Что значит не работает?

Выше сто раз сказали что дело не в версии php.


Да я понимаю, что дело не в версии. Просто в php4 он работает, а в php5 нет. Поэтому я и уточняю, что мне надо для php5.


Цитата(SteAlzzer @ 19.5.2008, 20:47) *

liw, позволь я сам найду ошибку, чисто для повышения практики, а ты скажешь, прав я или нет)) Просто чутук попозже, через минут 15-20.
Smoke, а че пишет, когда откурываешь страницу?


Страница просто перезагружается, и параметры $author и $keyworlds остаются неизменными.


--------------------
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SteAlzzer
сообщение 19.5.2008, 20:50
Сообщение #18


Турист
*

Группа: Пользователи
Сообщений: 60
Регистрация: 4.4.2008

Пользователь №: 12 943



Репутация:   0  


Если так говорить, то ты их просто не получаешь)))
Используй $peremennaya = $_POST[" "]; )))
А так, не понимаю смысл многих строчек...

Цитата
<?
include("meta_conf.php"); //Имеется файл с параметрами ($author; $keyworlds)

if ($update == "")
{
?>
Здесь чего-нибудь есть, или так и идет по коду?
<?
echo "
<form action='?adm=meta_teg ' method=post> liw, а здесь можно указывать такой файл в атрибуте action?
<br>Авторский состав:</font><input type=text name=author_ value=\"$author\" size=33>
<br>Ключевые слова:</font><input type=text name=keyworlds_ value=\"$keyworlds\" size=33>
name=meta_sitename_ value=\"$meta_sitename\" size=33> и че это за строчка?
<br><input type=submit name=action value=\"Обновить/Применить\"><br> а тег Form разве не требует закрытия?
";
}

if ($action == "Обновить/Применить")
{
$a_update_config = "<?\n";
$a_update_config .= "\$author = \"$author_\";\n"; Следующие три строчки вообще не понял) Зачем перед знаком присваивания стоит точка? Че за переменная, например, $author_ ? И че так все криво написано?
$a_update_config .= "\$keyworlds = \"$keyworlds_\";\n";

$a_update_config .= "?>";

$u_update_config = fopen("meta_conf.php","w+");
$a_update_config = ereg_replace("\\\'",""",$a_update_config); А че тут заменяется?
$a_update_config = ereg_replace('\\\"','"',$a_update_config);
$a_update_config = str_replace('<',"<",$a_update_config);
$a_update_config = str_replace('>',">",$a_update_config);
fputs ($u_update_config,$a_update_config);
$update = "okey";
А файл не надо закрывать?
}

if ($update == "okey")
{
echo "
<br><b>Параметры успешно обновленны нажмите на разделе с настройкой <a href=meta_teg>Нажмите СЮДА</a></b>"; А куда эта ссылка ведет? Разве он определит, что это за файл, не имея представления о его раширешении?
}
?>


Надеюсь, мне кто-нибудь ответит тупому на мои вопросы))))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SteAlzzer
сообщение 20.5.2008, 14:10
Сообщение #19


Турист
*

Группа: Пользователи
Сообщений: 60
Регистрация: 4.4.2008

Пользователь №: 12 943



Репутация:   0  


Ну и где то сообщение, которое я так усердно писал, а мне высвеилась табличка "Ждите проверки и утвержения модератором"?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
liw
сообщение 20.5.2008, 16:03
Сообщение #20


Житель
***

Группа: Модераторы
Сообщений: 283
Регистрация: 2.11.2007

Пользователь №: 6 760



Репутация:   20  


Цитата
<form action='?adm=meta_teg ' method=post> liw, а здесь можно указывать такой файл в атрибуте action?

Да, - указывать можно, просто тот же файл и параметры.

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V  1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 5.7.2008, 11:41
Rambler's Top100 Яндекс цитирования