Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аутентификация, не работае скрипт 
V
    Опции темы
Slauta
  Дата 8.12.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



Вот собственно все файлы:

enter.html
Код

<html>

<head>
  <title>Авторизация</title>
</head>

<body>
Укажите Ваши данные <br>
<form method = "post" action = "login.php">
<input name="login">Логин<br>
<input tupe = "password" name="pass" >Пороль<br>
<input type="submit" name="" value="Сохронить" tabindex="0">
</form>
<br>
<a href="register.html">Регистрация нового пользователя</a>
</body>

</html>



Login.php
Код

<?php
$db_name="portal";
$table="users";
$host="localhost";
$user="1111";
$pass="1111";
$link=mysql_connect($host,$user,$pass) or
die(mysql_errno($link).mysql_error($link));
//выбираем базу данных portal
$db=mysql_select_db($db_name,$link) or
die(mysql_errno($link).mysql_error($link));
$login=$_REQUEST['login'];
$pass=$_REQUEST['pass'];
$sqlquery = "SELECT count(*) FROM users WHERE login = \"$login\"";
//вибераем данные
$result=mysql_query($sqlquery, $link) or
die(mysql_errno($link).mysql_error($link));
$data=mysql_fetch_array($result);
if($data[0]>0){
// логин есть сравним пароль
$sqlquery = "SELECT pass FROM users WHERE login = \"$login\"";
 $result=mysql_query($sqlquery, $link) or
die(mysql_errno($link).mysql_error($link));
$password=mysql_fetch_array($result);
if($password[0]!=$pass){
echo ("Неверный пароль");
echo ("<br><a href=\"enter.html\">Перейти обратно</a>");
}
else{
session_start();
$_SESSION['is_logged'] = TRUE;
header('Location: closed.php');
}
}
else
{
echo ("Неверное имя пользователя");
echo ("<br><a href=\"register.html\">Переход на регистрацию.</a>");
}
mysql_free_result($result);
mysql_close($link);
?>


register.html
Код

<html>

<head>
  <title>Страница регистрации</title>
</head>

<body>
Укажите Ваши данные <br>
<form method = "post" action = "register.php">
<input name="login">Логин<br>
<input tupe = "password" name="pass" >Пороль<br>
<input type="submit" name="" value="Сохронить" tabindex="0">
</form>
</body>

</html>



register.php
Код

<?php
$db_name="portal";
$table="users";
$host="localhost";
$user="1111";
$pass="1111";
$link=mysql_connect($host,$user,$pass) or
die(mysql_errno($link).mysql_error($link));
//выбираем базу данных portal
$db=mysql_select_db($db_name,$link) or
die(mysql_errno($link).mysql_error($link));
$login=$_REQUEST['login'];
$pass=$_REQUEST['pass'];
$sqlquery = "SELECT count(*) FROM users WHERE login = \"$login\"";
//вибераем данные
$result=mysql_query($sqlquery, $link) or
die(mysql_errno($link).mysql_error($link));
$data=mysql_fetch_array($result);
if($data[0]>0){
echo ("Такой логин уже существует");
echo ("<br><a href=\"register.html\">Переход на регистрацию.</a>");
}
else
{
$sqlquery = "INSERT INTO users (login, pass) VALUES (\"$login\", \"$pass\")";
$result=mysql_query($sqlquery, $link) or
die(mysql_errno($link).mysql_error($link));
session_start();
$_SESSION['is_logged'] = TRUE;
header('Location: closed.php');
}
mysql_free_result($result);
mysql_close($link);
?>



closed.php
Код

<?php
include 'logged.php';
echo "Закрытый раздел сайта";
?>


logged.php
Код

<?
if((!isset($_SESSION['is_logged'])) || ($_SESSION['is_logged']==FALSE))
    header ('Location: enter.html');
?>



Вот блин регистрация работает нормальна...
Вопрос про аутентификацию... Ввожу логин пароль а она меня перебрасывает сначала на closed.php а патом опять на enter.html, а должна была бы оставить на closed.php, но если бы я вошёл прямой ссылка на closed.php она меня перебрасывала на enter.html...
Блин 7 час мучаюсь, весь инет перерыл... 

Может кто знает в чём проблема?
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
capitan
Дата 8.12.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



ни в одном скрипте не увидел 
Код

session_start();

PM MAIL WWW ICQ   Вверх
nginx
Дата 8.12.2009, 20:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 20.6.2009

Репутация: 1
Всего: -3



Цитата

$login=$_REQUEST['login'];

$_REQUEST - плохо юзать, нужно юзать четко $_GET
в случае $_REQUEST одинаковые ключи затираются, т.к $_REQUEST = $_GET + $_POST, а у вас могут быть одинаковые ключи в ГЕТе и ПОСТе, и используя РЕКВЕСТ в просто затрете их

сессию вы в конце юзаете
Цитата

else{
session_start();
$_SESSION['is_logged'] = TRUE;
header('Location: closed.php');



а нужно ее включать в самом начале файла всегда

вопрос вы случайно не книгу Шапошникова читатете?

Цитата

include 'logged.php';

вообще лучше require_once всегда юзать
почитайте разницу между require && include

вы и once лучше сразу всегда юзать, чтобы избежать переопределения, если вы случайно во 2-ой раз подряд включите один и тот же файл

и вообще советую сразу использовать mysqli или pdo  smile 

Цитата

if((!isset($_SESSION['is_logged'])) || ($_SESSION['is_logged']==FALSE))

лишний код, и (!isset($_SESSION['is_logged']) - хватит

а вообще код свой напишу пока

Код

<?php
session_start();

mysql_connect("localhost", "root", ""); //сами введете свои данные
mysql_select_db("mydbname");

$sql = mysql_query(sprintf("SELECT login, pass FROM users WHERE login = '%s'", mysql_real_escape_string($_POST['login'])));
$res = mysql_fetch_assoc($sql);

if(!$res)
{
exit("Нет таких данных в бд!"); //юзеру выводит не надо, сами тут разберетесь
}
elseif($res['login'] != $_POST['login'] && $res['pass'] != $_POST['pass'])
{
exit("Неверные данные!");
}
else
{
$_SESSION['user'] = $_POST['user'];
header('Location: main_page.php');
exit();
}
?>


У уже давно не занимался на ПХП, могут быть ошибки с кавычками, но думаю разьеретесь на основе этого очень простого примера, если не хотите сразу на mysqli || pdo


Это сообщение отредактировал(а) nginx - 8.12.2009, 21:19
PM MAIL   Вверх
nerezus
Дата 8.12.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

а вообще код свой напишу пока
Код


<?php
session_start();
mysql_connect("localhost", "root", ""); //сами введете свои данные
mysql_select_db("mydbname");

$sql = mysql_query("SELECT * FROM users WHERE login = '{$_POST['login']}'");
$res = mysql_fetch_assoc($sql);

if($res['login'] != $_POST['login'])
{
print "Нет такого логина!";
exit();
}

$sql = mysql_query("SELECT pass FROM users WHERE  login = '{$_POST['login']}'");
$res = mysql_fetch_assoc($sql);

if($res['pass'] != $_POST['pass'])
{
print "Неверный пароль!";
exit();
}
else
{
$_SESSION['user'] = $_POST['user'];
header('Location: main_page.php');
exit();
}



1. SQL-inj
2. Зачем 2 раза делатьь запрос?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nginx
Дата 8.12.2009, 20:31 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 20.6.2009

Репутация: 1
Всего: -3



Нер, исправил зацени =)
PM MAIL   Вверх
capitan
Дата 8.12.2009, 20:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



nginx
1. Не стоит так подробно информировать пользователя. Не тот логин, не тот пароль. Делать лучше так:"Неправильный пароль или логин".
2. 
Код

$_SESSION['user'] = $_POST['user'];


тоже не стоит так делать. $_POST['user'] нужно проверять.
PM MAIL WWW ICQ   Вверх
nerezus
Дата 8.12.2009, 21:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Код

$sql = mysql_query(sprintf("SELECT login, pass FROM users WHERE login = '%s' AND pass='%s'",
    mysql_real_escape_string($_POST['login']),
    mysql_real_escape_string($_POST['pass']));
$res = mysql_fetch_assoc($sql);
if (!$res) {
    die('Auth failure');
}
$_SESSION['user'] = $_POST['login'];
header('Location: main_page.php');


Как-то так.

Это сообщение отредактировал(а) nerezus - 8.12.2009, 21:00


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nginx
Дата 8.12.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 20.6.2009

Репутация: 1
Всего: -3



Прошу прощения, у меня условие неправильно написано.
Нер, как всегда, меня правит =) молодец

Цитата

$res = mysql_fetch_assoc($sql);
if (!$res) {
    die('Auth failure');
}


у меня на else выйдет сразу ) двоечник пока что $me  smile 
т.к. если в БД нет допустим такой записи, то и $res['login'] не будет =) и пасс тоже ) и в итоге на else выйдет
мдя...обложался =)

Цитата

1. Не стоит так подробно информировать пользователя. Не тот логин, не тот пароль. Делать лучше так:"Неправильный пароль или логин".

Дык, я же на рабочий вар-т =) Если рабочий, я бы сразу mysqli заюзал бы ) мы же тут просто помогаем ТС ) он вряд ли сейчас будет с mysqli && pdo работать


Цитата

$_SESSION['user'] = $_POST['user'];
тоже не стоит так делать. $_POST['user'] нужно проверять. 

дык мы и проверяем

Это сообщение отредактировал(а) nginx - 8.12.2009, 21:34
PM MAIL   Вверх
NewDima
Дата 9.12.2009, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Цитата(nginx @ 9.12.2009,  03:03)
вообще лучше require_once всегда юзать

Для каждой директивы свое место
nginxпочитайте разницу между require && include и за одно, что они возвращают

PM ICQ   Вверх
nginx
Дата 9.12.2009, 19:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 20.6.2009

Репутация: 1
Всего: -3



NewDima, прочитал, прочтите сами  smile 

Это сообщение отредактировал(а) nginx - 9.12.2009, 19:13
PM MAIL   Вверх
nerezus
Дата 9.12.2009, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Как по мне, то include/include_once не имеют смысла - отсутствие библиотеки или шаблона - это уже фатальная ошибка.

require же применять вижу смысл только для шаблонов - их возможно переподключать с разными assign-параметрами.
Так что логично, что в остальных случаях будет верно require_once.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
NLspieler
Дата 10.12.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Цитата(nerezus @  9.12.2009,  19:24 Найти цитируемый пост)
include/include_once не имеют смысла

В данной ситуации или вообще?

На мой взгляд, include очень полезен
он позволяет сделать так, что бы файл выступал в роли функции. 
Очень часто, это бывает очень удобным


PM MAIL   Вверх
Pitlord
Дата 10.12.2009, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: 4
Всего: 7



NLspieler, а файл и не должен выступать в роли функции.
PM MAIL   Вверх
Slauta
Дата 10.12.2009, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



Блин, этот шапашников...
Дайте мне норм ответ что бы хотя бы работала...
Я так понял вся проблема в include?
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
Pitlord
Дата 11.12.2009, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: 4
Всего: 7



Slauta, нет, основная проблема в отсутствии session_start() в logged.php, о чём говорилось ещё в первом ответе.
PM MAIL   Вверх
Ипатьев
Дата 11.12.2009, 02:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(nginx @  8.12.2009,  20:03 Найти цитируемый пост)
$sql = mysql_query(sprintf("SELECT login, pass FROM users WHERE login = '%s'", mysql_real_escape_string($_POST['login'])));
$res = mysql_fetch_assoc($sql);
if(!$res)

долго втыкал в этот код, и только потом понял, что это классическая обфускация.
Использовать имя $sql не для строки с sql запросом, а для переменной типа resource, а $res, при этом - для массива... ну, можно, в принципе.
Но если цель запутать читателя программы не ставится специально, рекомендую так не делать.


Это сообщение отредактировал(а) Ипатьев - 11.12.2009, 02:26
PM MAIL   Вверх
NewDima
Дата 11.12.2009, 04:43 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



nerezus, а кто сказал, что отсутствует библиотека? Может быть отсутствует файл настроек? В фреймверке, который использую я - это вполне нормально. Значит можно использовать дефолтные настройки.
Думаю, NLspieler как раз это и имел ввиду, только не "функции", его роль опциональна.
Pitlord, не стоит говорить хоть что-то с целью только сказать
PM ICQ   Вверх
nerezus
Дата 11.12.2009, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

nerezus, а кто сказал, что отсутствует библиотека? Может быть отсутствует файл настроек? В фреймверке, который использую я - это вполне нормально. Значит можно использовать дефолтные настройки.
 Сколько же мегабайт еррорлога в день накручивает у тебя )
А проверить наличие файла - не судьба?)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
NewDima
Дата 11.12.2009, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



nerezus, а я не хочу проверять  smile 
PM ICQ   Вверх
Slauta
Дата 11.12.2009, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



Чёт нифига не пайму! Если в logged.php будет sеssion_start() то logged.php уже не будед модулем проверки на сессию, а её создателем?...
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
NewDima
Дата 11.12.2009, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Slauta, session_start используется везде, где нужна работа с сессией, любая работа. Иначе сессия не будет доступна
PM ICQ   Вверх
Slauta
Дата 11.12.2009, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



Ага... Значит всё дело в отсутствии sessiоn_start() в logged.php?

Приду дамой папробу...
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
Ипатьев
Дата 11.12.2009, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



домой, попробую
PM MAIL   Вверх
Slauta
Дата 11.12.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



Ну я из беларуссии, основная ошибка правописания а и о!
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
Slauta
Дата 11.12.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Оторванный от жизни
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 14.5.2009
Где: Солигорск

Репутация: нет
Всего: нет



А всё норм работает! (Вот за что я люблю Vingrad)..................
Спасибо всем участником, + поставить покуда не могу.
--------------------
Хм...
PM MAIL WWW ICQ Skype   Вверх
Pitlord
Дата 11.12.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: 4
Всего: 7



Цитата(NewDima @  11.12.2009,  04:43 Найти цитируемый пост)
Pitlord, не стоит говорить хоть что-то с целью только сказать 

Тогда молчи)
PM MAIL   Вверх
nerezus
Дата 13.12.2009, 03:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

nerezus, а я не хочу проверять
 В данном случае ты используешь скостыль.
Плюсов нет - минусы есть.

Так что применение неправильно объективно. Так что в данном случае не пройдет данный аргумент )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
NewDima
Дата 13.12.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



nerezus, использовать возвращаемое значение конструкции - костыль?  smile 
Не ожидиал от тебя такого услышать. Нас не волнует, почему не подключается тот или иной модуль, по причине его отсутствия, или еще чего. Нам важно, что он не может быть подключен. И конструкции require/include говорят это лучуше, чем file_exists. Получается, как раз file_exists в этой ситуации костыль. Ну и об объективности ты думаю понимаешь, что я хочу сказать =)

Это сообщение отредактировал(а) NewDima - 13.12.2009, 13:14
PM ICQ   Вверх
Ипатьев
Дата 13.12.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Дима. Судя по всему, вы никогда не контролировали работу настоящего сайта по логу ошибок.
Иначе бы вы как огня избегали любого кода, который генерирует ошибки при нормальной работе
PM MAIL   Вверх
NewDima
Дата 13.12.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Ипатьев, в точку, я уже учел этот факт. Но очень сомневаюсь, когда говорят, что та или иная часть в php не нужна
PM ICQ   Вверх
nerezus
Дата 13.12.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Ипатьев, в точку, я уже учел этот факт. 
 А я про это говорил в самом начале данного разговора.

Цитата

Но очень сомневаюсь, когда говорят, что та или иная часть в php не нужна
 Т.е. ты свято веришь, что PHP - идеальный язык, и если что-то в нем кажется кривым - то виноват только тот, кому кажется?)
И ты не считаешь, что в PHP нет кучи бардака?)

P.S. Я считаю, что в PHP  куча бардака, т.к. его сначала писали, потом думали, но не чинили из-за совместимости.
Многие функции абсолютно непродуманы.

Пример 1.
strpos($haystack , $needle)
in_array ($needle , $haystack)
Бардак в порядке $haystack и $needle - он присутсвует абсолютно везде.

Пример 2.
strpos
html_ entity_ decode
htmlspecialchars
parse_ str

Как мы видим, бардак в названиях полнейший:
funcname
function_name
functionname
name_of_function
Аналогично предыдущему.

Я не говорю уже о неполноценном парсере.
Пример 1.
Данная конструкция работает в любом современном интерпретируемом или компилируемом языке. Но не в PHP.
Код

<?php

function d() {
    return array(date(), time());
}

echo d()[1]; // time?

Почему не работает?
Почему я не могу взять [] от массива? о_О
Потому что разраработчики не смогли освоить бизон, или где?

Пример 2.
$f = some_func();
other_func($f);
Данный код НЕ равен 
other_func(some_func();
Второй код не работает с некоторыми функциями some_func. 
Что скажешь?
Причина та же, что и в предыдущем пункте.

Явные ошибки в мануале:
Код

<?php
var_dump('5.0' == '5.1');
var_dump('5' == '5.0');

Ответь, почему такой результат?



Так вот.  Поэтому когда кто-то говорит, что в пхп все продумано и все нужно, то... )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
NewDima
Дата 13.12.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



nerezus излил душу, долго копил? =))
Я согласен в плане непоследовательности названий функций, передаваемых параметров. Правда не понимаю, чем тебя такой вывод сравнения не удовлетворяет. Только это все говорит о бардаке, но не о ненужности функционала. Хотя ты все-равно прав. Я подумаю.
А по поводу того, что ты уже писал раньше, а я типа только сейчас заметил только когда сказал Ипатьев - я сразу понял. что ты имеешь ввиду, просто не написал. Кстати, отсутствие возможности непосредственной индексации по результату функции меня тоже крайне раздражает
PM ICQ   Вверх
nerezus
Дата 13.12.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Итак, подведем итог:
@include - костыль. При этом есть нормальные методы.
Что проедпочтительнее: нормальный метод или костыль?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1550 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.