Strict Standards: Resource ID#33 used as offset, casting to integer (33) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Функция: Запрет на запись
ТвойWeb » WebMaster класс » PHP/Perl » Функция: Запрет на запись

Страниц (2): [1] 2 »
 

1. Alone - 17 Апреля, 2005 - 02:20:41 - перейти к сообщению
Как запретить запись в базу (на файлах - base.txt) файла больше максимального размера (max.30000)?
Переменная называется: $maxsize (она инклудится из другого файла где задаётся макс. размер - здесь всё понятно).
Имя файла (и путь к файлу): $File_name

Так правильно?:

CODE:
if ($File_name >= "$maxsize"):
echo ""Загружаемый файл больше максимального размера!";


Например запрет на запись (после определения, что такой файл уже записан) выглядит так:

CODE:
if (file_exists("$File_name")):
echo "Такой файл уже существует!";
2. Alone - 17 Апреля, 2005 - 04:58:42 - перейти к сообщению
Додумался!:

CODE:
/* Этот код запрещает размер больше max */
if (filesize($File_name) >= $maxsize):
echo "Загружаемый файл больше максимального размера!";
exit;
endif;


Если можно - не закрывайте тему. Мож что ещё спрашу...Ниндзя
3. Alone - 17 Апреля, 2005 - 20:31:53 - перейти к сообщению
Ещё вопрос:

Вот у меня есть база на файлах: base.txt

В ней записано например следующее:

CODE:
<a href="http://sait.org" target="_blank"><img src="img/banner.jpg"
alt="Баннер" width="468" height="60" border="0"></a>
<a href="http://sait.org/123.htm" target="_blank"><img src="img/othe.gif"
alt="Баннер" width="468" height="60" border="0"></a>


(Эта инфа выводится из базы в случайном порядке в виде случайного баннера - это мне всё понятно)

В эту базу идёт запись файла при выборе его с жёсткого диска юзера при на жатии кнопки "Обзор...). Также записывается адрес введённого в форму сайт

а. Например: http://sait.org
Как видно вверху - сайт: http://sait.org повторяется.
Мне надо чтобы при записи производилась проверка на то, есть ли в базе уже сайт, который начинается на http://sait.org и запись не производилась. Т.е. как должна выглядеть эта переменная, которая отвечает за этот участок инфы базы, чтобы мне с нею начать работать?

Этот код отвечает за показ баннера:

CODE:
<?
$imgbasa="base.txt";
$array=file($imgbasa);
echo $array[rand(0,count($array)-1)];
?>
4. TvoyWeb - 17 Апреля, 2005 - 20:41:02 - перейти к сообщению
Alone пишет:
Этот код отвечает за показ баннера:

Нужен не этот код, а код который записывает.
Alone пишет:
Т.е. как должна выглядеть эта переменная, которая отвечает за этот участок инфы базы, чтобы мне с нею начать работать?

Это знает только тот кто писал этот скрипт Улыбка
5. Alone - 17 Апреля, 2005 - 21:22:32 - перейти к сообщению
TvoyWeb пишет:
Это знает только тот кто писал этот скрипт

Так вот вроде в том коде который я привёл вверху должна быть эта переменная (поэтому я его и привёл). Иначе как баннер будет выбираться.
В коде который записывает - там ничего того, о чём я говорю - нету.

Но если нужен вот он:
CODE:
/* Код добавляющий в базу картинку */
$open=fopen("base.txt","a") or die ("Не удалось добавить в базу код ...");
fwrite($open,"<a href=\"$url\" target=\"_blank\"><img src=\"$optdirekt\" alt=\"$alt\" width=\"468\" height=\"60\" border=\"0\"></a>\n");
fclose($open);
\n\n(Добавление)
А... тогда может быть эта переменная: $url ???

Тогда так правильно будет???:

CODE:
if ($url == "sait.org"):
echo "Такой сайт уже существует в базе данных!";
exit;
endif;
\n\n(Добавление)
Не-а, так тожа не работает... Недовольство, огорчение

Не могу понять что вводится вместо ????????

CODE:
if ($url == "????????"):
echo "Такой сайт уже существует в базе данных!";
exit;
endif;
6. TvoyWeb - 17 Апреля, 2005 - 22:47:57 - перейти к сообщению
Alone
Это все неправильно! Ты пойми что в одном скрипте одна переменная, в другом переменная с тем же имененм может иметь совсем другое значение. И ты в корне не правильно понимаешь всю суть.
В скрипте который у тебя пишет в файл нет куска в котором берутся данные из файла чтобы сравнить с тем что ввел пользователь. Это раз.
Во-вторых, даже если бы у тебя и был бы такой кусок куда, то все равно нужно разбирать записи в файлах регулярными выражениями и сравнивать введенный URL с только с определенной частью записи.
Так что твой код должен пополниться кодом в двое больше того чем есть сейчас.
7. Alone - 18 Апреля, 2005 - 01:00:44 - перейти к сообщению
Ну а так я на правильном пути?:

CODE:
$open="base.txt";
if (file_exists("$url")):
echo "Такой сайт уже существует!";
8. TvoyWeb - 18 Апреля, 2005 - 02:53:17 - перейти к сообщению
Alone
Нет.
CODE:
/***
* Предположим что $url это введенный
* через форму URL
***/
$imgbasa="base.txt";
$write = TRUE;
$array=file($imgbasa);
for ($i=0;$i<sizeof($array);$i++){
if(preg_match("#^\<a href=\"($url)\"#is", trim($array[$i]))){
$write = FALSE;
break;
}
}
if ($write === FALSE){
echo "Такой сайт уже существует в базе данных!";
exit();
} else {
/***
* Здесь код который пишет в файл
***/
}
9. Alone - 18 Апреля, 2005 - 04:02:40 - перейти к сообщению
Что-то не получается ни фига (не проверяет на повторяемость URL) Наверно я что-то не так сделал Недовольство, огорчение

Это форма которая отправляет в файл ok.php:

CODE:
Этот код не нужен.
Поэтому я убрал его.


Это сам файл ok.php:

CODE:
<? echo"<title>$title</title>"; ?>
<meta name="author" content="VCP">
<meta name="generator" content="VCP_Editor">
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">


<font size="2" color="#336633" face="Verdana"><?php

/* Код который выводит свойства файла */
if ($File&& $File !== "none") {


if ( $File_type == "image/pjpeg" || $File_type == "image/x-png" || $File_type == "image/gif" || $File_type == "image/jpeg" ) {

/* Этот код запрещяет перезапись */
if (file_exists("$direct/$File_name")):
echo "<b>Такой файл уже существует!</b>";
exit;
endif;


/* Этот код запрещает размер больше max */
if ($File_size > $maxsize):
echo "Загружаемый файл больше максимально допустимого размера!<BR>Максимально допустимый размер: 30 Kb";
exit;
endif;


$optdirekt = "$direct/$File_name";
echo "Баннер внесён в базу данных!<BR>";
echo "Название Вашего баннера: $File_name<BR>";
echo "Размер Вашего баннера: $File_size Kb<BR>";
echo "Тип баннера: $File_type";

/* Код копирования */
copy ($File, $optdirekt) or die ("Файл не загружен....");

/* Код добавляющий в базу картинку */
$open=fopen("base.txt","a") or die ("Не удалось добавить в базу код ...");
fwrite($open,"<a href=\"$url\" target=\"_blank\"><img src=\"$optdirekt\" alt=\"$alt\" width=\"468\" height=\"60\" border=\"0\"></a>\n");
fclose($open);

}
else print "<font face=verdana size=2 color=#FF6600><b>Загружаться могут только такие файлы:</b> .jpge | .gif | .png</font\n";

}

?>


База данных (внутренности):
CODE:
<a href="http://sait.org" target="_blank"><img src="img/banner.jpg" alt="Мой сайт" width="468" height="60" border="0"></a>
10. TvoyWeb - 18 Апреля, 2005 - 18:35:13 - перейти к сообщению
Alone
Возможно во время отправки данных через форму происходит экранирование опасных символов. Помнишь, помоему у тебя было в письме двойные кавычки обрамлялись слешем.
Скорее всего здесь то же самое.
В моем коде прежде чем проверять обработай $url функцией очистки от экранирования.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0455]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33