|
|
|
|
|
для: as67ji
(11.07.2009 в 11:44)
| |
$arr = 6;
$i = 3;
print $arr[$i];
|
Какой реакции Вы ожидаете? | |
|
|
|
|
|
|
|
для: GeorgeIV
(11.07.2009 в 11:29)
| | >Это не ошибка, а предупреждение, что ждали массив, а пришла просто переменная.
>Это не страшно, можно проигнорировать, если логика работы не нарушается
Я бы сказал по-другому.
Если при таком предупреждении не нарушается логика, значит любая логика в скрипте отсутствует напрочь. А значит и вправду нестрашно. | |
|
|
|
|
|
|
|
для: GeorgeIV
(11.07.2009 в 11:29)
| | Ммм... Что может быть?
Допустим, у меня массив $arr, а где-то позже я случайно сделал $arr=6...
И при выводе for(...) { print $arr[$i]; } вылетит эта ошибка? | |
|
|
|
|
|
|
|
для: GeorgeIV
(11.07.2009 в 11:29)
| | Ммм... Что может быть? | |
|
|
|
|
|
|
|
для: as67ji
(11.07.2009 в 11:21)
| | Это не ошибка, а предупреждение, что ждали массив, а пришла просто переменная.
Это не страшно, можно проигнорировать, если логика работы не нарушается | |
|
|
|
|
|
|
|
для: as67ji
(10.07.2009 в 13:22)
| | Не хотел создавать новую тему...
Подскажите, что обозначает ошибка
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 2
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 3
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 4
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 5
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 6
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 7
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 8
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 9
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 10
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 11
Warning: Cannot use a scalar value as an array in C:\php\Apache2\htdocs\news.php on line 12
|
| |
|
|
|
|
|
|
|
для: tvv123456
(10.07.2009 в 16:11)
| | tvv123456,
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
|
не пашет у меня - php не так установлен, чтобы использовать эту авторизацию.
Насчёт того кода что вы показали - некоторые идеи можно использовать, но в целом мне не подходит.
Akdmeh, использование констант штука полезная... Но прописывать их в огромное количество файлов что-то не сильно хочется... Проще оставить всё "as is". | |
|
|
|
|
|
|
|
для: As67ji
(10.07.2009 в 15:29)
| | Тут нашел у себя один из превых своих скриптов написанных на php(вроде пока ничего страшного не случилось с сайтами которые его использауют), состоит из 2-х файлов, первый обрабатывает введенные данные в форму входа и присваетвает куки, второй включается в начало каждой страницы и закрывает дотсуп если не существуют нужные куки.
файл-обработчик данных полученных с формы входа:
<?
if (isset($HTTP_POST_VARS['GLOBALS']) || isset($HTTP_POST_FILES['GLOBALS']) || isset($HTTP_GET_VARS['GLOBALS']) || isset($HTTP_COOKIE_VARS['GLOBALS']))
{
die("Hacking attempt");
}
// Protect against HTTP_SESSION_VARS tricks
if (isset($HTTP_SESSION_VARS) && !is_array($HTTP_SESSION_VARS))
{
die("Hacking attempt");
}
$protected = "AQwjliIIsad15775QQvvbmk";
include("bloks/bd.php");
if (isset($_POST['user']))
{
$user = $_POST['user'];
}
if (isset($_POST['pass']))
{
$pass = $_POST['pass'];
}
$result = mysql_query("select * from auth where user='$user'",$db);
if (!$result)
{
echo "<p>Возникла ошибка с базой данных.";exit (mysql_error());
}
if(mysql_num_rows($result) > 0) //проверяет если пользователь в базе
{
$myrow = mysql_fetch_array($result);
$id = $myrow['id'];
}
else
{
echo "<p>В базе нет такого пользователя</p>";
exit();
}
if ($pass == $myrow['pass']) {
setcookie ("user", $user);
setcookie ("id", $id);
setcookie ("provvv", 4568872);
echo "<html>
<head><meta http-equiv='Refresh' content='0; URL=***'>
</head>
</html>";//переадресовка на нужную страницу
}
else {echo "<html>
<head>
<title>Неверный пароль</title>
</head>
<body> Был введен неверный пароль! Вернитесь <input name='back' type='button' value='назад' onclick='history.back(); '/> и введите правильный пароль.
</html>"; } ?>
|
Файл лок который подключается в начало каждого "засекреченного раздела":
<?
if(!isset($protected) OR $protected != "AQwjliIIsad15775QQvvbmk") {exit("Ошибка!");}
if (!isset($_COOKIE['provvv']) or $_COOKIE['provvv'] != '4568872') { echo "<html><head><title>Незарегистрированный пользователь</title>
</head><body><p>Вы не можете просмотреть данную страницу</p>
</body></html>
";
exit();}
if (isset($_COOKIE['user'])) // раз дошли до этого места значит куки были 100% присвоены проверяем на соответствие
{
$user = $_COOKIE['user'];} else {exit("Проблема с COOKIE (не опредилился автор).");}
if (isset($_COOKIE['id']))
{
$user_id = $_COOKIE['user_id'];}
else {exit("Проблема с COOKIE");}
echo "<font color='#CC6633'>Вы находитесь на сайте как: ".$user."</font>";
include("bloks/bd.php");
$result = mysql_query("select * from auth where user='$user' AND id = '$user_id'",$db);
if (!$result)
{
echo "<p>Возникла ошибка с базой данных. <strong>Сообщите администратору:tropnikovvv1@yandex.ru</strong></p>";
exit (mysql_error());
}
if(mysql_num_rows($result) != 1) // небольшая проверочка на косяки(вдруг 2 пользователя с одним ником каким-то образом попали в базу
{
echo "<p>Не могу определиться с пользователем. Скорей всего ошибка произошла не по вашей вине. Напишите пожалуйста об ошибке:***или в <a href='gb.php'>гостевую</a></p>";
exit();
}
?>
|
Более менее приличный скрипт, но на админскую часть его лучше не ставить так как куки в принципе можно утащить. И желательно конечно файл lock не подключать, а прописывать его код в начале каждой страницы.
Более надежную защиту можно составить на основе вот этого:
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
Но это уже другая история потому что для обычного пользователя это будет выглядеть немного непривлекательно, обычно это используют только для админок. | |
|
|
|
|
|
|
|
для: As67ji
(10.07.2009 в 15:29)
| | раньше я юзал константу WAY
например
define('WAY', '');
значит, что скрипт в корне. а файлы подключал через include WAY.'file.php';
А если я был в подпапке от корня, то в файле прописывал define('WAY', '../');
ну как это делать вам - подумайте сами, может придумаете свой способ | |
|
|
|
|
|
|
|
для: Akdmeh
(10.07.2009 в 15:16)
| | Предложите другой вариант?) | |
|
|
|
|