Без описания |
Поиск в теме | Версия для печати |
Termit1987 |
Отправлено: 25 Февраля, 2008 - 07:05:13
|
Newbie
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2008
Карма 0
|
Привет всем. Я с недавних пор начал интересоваться языками php и html, но пока познания в этом ооочень малы. И вот у меня возник к Вам вопрос. Мне необходимо сделать следующее: разработать форму, позволяющую вводить название файла. При помощи регулярных выражений проверить имя файла, если корректно, то создать файл с указанным именем, иначе – выделить недопустимые символы. Имя файла не должно превышать 255 символов и содержать \ / : * ? " < > |.
Я сделал html шаблон но когда дело дошло до проверки, я застрял. И также я немогу создать файл при помощи php. Не могли бы Вы помочь новичку?
Пример моего html кода
CODE:<html>
<form action="lab2.php">
<table align="center" width="610" height="80" border="1">
<tr>
Введите имя файла: <input type="text" name="imya" size="70" maxlength="255" value=""><br><br>
<FONT COLOR="red">Внимание:</FONT> имя файла не должно превышать <FONT COLOR="red">255</FONT> символов и содержать знаки <FONT COLOR="red"> \ / : * ? " < > </FONT>
<br><br>
<center><input type="submit" name="create" value="Создать файл">
</td></tr>
</form>
</html>
php-код
CODE:$fp = fopen ("@$Imya.txt","w");
fclose($f);
Буду всем признателен за помощь! |
|
|
Furax |
Отправлено: 25 Февраля, 2008 - 08:07:14
|
Бледнотик
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007
Откуда: Иркутск, Сибирь, СССР
Карма 32
|
CODE:$name = $_GET['imya']; //Регистр важен!
$symbols = array("\\", '/', '"', '?', ':', '*', '<', '>', '|');
foreach ($symbols as $symbol)
if (strpos($name)!==FALSE)
$name = str_replace($symbol, '<font color=red><b>'.htmlSpecialChars($symbol).'</b></font>', $name);
if ($name != $_GET['imya'])
{
echo "Неверное имя файла! Плохие символы выделены: $name";
}
else
{
$f = fopen($name, 'w');
fclose($f);
} Кстати, список плохих символов, как я понял, составлен применимо к Windows-правилам именования? Если на хостинге линукс, возможно, следует его несколько изменить; точнее не скажу, ищите по правилам именования файлов в UNIX. |
|
|
Termit1987 |
Отправлено: 25 Февраля, 2008 - 08:49:04
|
Newbie
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2008
Карма 0
|
Большое спасибо за то, что так быстро ответил.
Насколько я понял, все должно выглядить так:
CODE:
<html>
<form action="proba.php">
<table align="center" width="610" height="80" border="1">
<tr>
Введите имя файла: <input type="text" name="imya" size="70" maxlength="255" value=""><br><br>
<FONT COLOR="red">Внимание:</FONT> имя файла не должно превышать <FONT COLOR="red">255</FONT> символов и содержать
знаки <FONT COLOR="red"> \ / : * ? " < > </FONT>
<br><br>
<center><input type="submit" name="create" value="Создать файл">
</td></tr>
<?
{
$name = $_GET['imya'];
$symbols = array("\\", '/', '"', '?', ':', '*', '<', '>', '|');
foreach ($symbols as $symbol)
if (strpos($name)!==FALSE)
$name = str_replace($symbol, '<font color=red><b>'.htmlSpecialChars($symbol).'</b></font>', $name);
if ($name != $_GET['imya'])
{
echo "Неверное имя файла! Плохие символы выделены: $name";
}
else
{
$f = fopen($name, 'w');
fclose($f);
}
?>
</form>
</html>
Если я использую этот код, то при попытке вызвать страничку (http://localhost/proba.php) Появляется ошибка:
Parse error: parse error, unexpected $end in y:\home\localhost\www\proba.php on line 48
Я так понимаю что он не может найти какую-то переменную $end?
Как можно исправить данную ошибку?
p.s. Не мог кто-нибудь написать ссылки на какие нибудь учебники (методички) по php, так сказать, для чайников?(Отредактировано автором: 25 Февраля, 2008 - 08:55:35) |
|
|
Furax |
Отправлено: 25 Февраля, 2008 - 09:23:06
|
Бледнотик
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007
Откуда: Иркутск, Сибирь, СССР
Карма 32
|
Насчёт учебников посмотри в соседней ветке.
Что до кода - нет, речь не о переменной. PHP не нашёл закрывающей фигурной скобки к открытой тобой - вот и говорит, что, мол, она ещё не закрыта, а тут уже конец ($end) файла.
Код я бы написал так:CODE:<form action="proba.php" method="GET">
<table align="center" width="610" height="80" border="1">
<tr>
Введите имя файла: <input type="text" name="imya" size="70" maxlength="255" value=""><br><br>
<FONT COLOR="red">Внимание:</FONT> имя файла не должно превышать <FONT COLOR="red">255</FONT> символов и содержать
знаки <FONT COLOR="red"> \ / : * ? " < > </FONT>
<br><br>
<center><input type="submit" name="create" value="Создать файл">
</td></tr>
<?php
if (isSet($_GET['imya']))
{
$name = $_GET['imya'];
$symbols = array("\\", '/', '"', '?', ':', '*', '<', '>', '|');
foreach ($symbols as $symbol)
if (strpos($name)!==FALSE)
$name = str_replace($symbol, '<font color=red><b>'.htmlSpecialChars($symbol).'</b></font>', $name);
if ($name != $_GET['imya'])
{
echo "Неверное имя файла! Плохие символы выделены: $name";
}
else
{
$f = fopen($name, 'w');
fclose($f);
echo 'OK!';
}
}
?>
</form>
</html> |
|
|
ETC |
Отправлено: 25 Февраля, 2008 - 13:25:52
|
Flash-coder
Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003
Откуда: TimeZero
Карма 26
|
Termit1987
А вы в курсе, что форум не является чатом, что сегодня выходной день, что вообще у людей есть свои дела, что вам ответят, когда захотят, что отвечать вам не обязан никто, что вы не имеете права поднимать тему глупыми вопросами типа «никто мне помочь не сможет?», нет? Вот имейте ввиду.
Когда будет у людей время, вам помогут. Сидите и молча ждите. |
|
|
Termit1987 |
Отправлено: 25 Февраля, 2008 - 15:01:43
|
Newbie
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2008
Карма 0
|
Так, немного поковырявшись в справочниках, с расширением разобрался. Но вот ошибка все-же остается для меня тайной.
Ошибка по прежнему осталась. Несмотря на эту ошибку программа работает правильно (то есть ошибка на ход выполнения программы не влияет), но все-же она портит внешний вид. Кроме того коректно не отображается следующее условие: "При помощи регулярных выражений проверить имя файла, если корректно, то создать файл с указанным именем, иначе – выделить недопустимые символы."
Вот именно неправильные символы как то странно выделяються:CODE:"cvx>><>>font color=red>>><>>b>\>><>>>><>>font color=red>>><>>b>/>><>>/b>>><>>/font>b>>><>>>><>>font color=red>>><>>b>/>><>>/b>>><>>/font>font>"
И как это исправить, с моими познаниями в области php, я пока не знаю. Так что помогите, пожалуйста, кто чем сможет...
ETC Извини, если я что то сделал не правильно. В дальнейшем я буду стараться избегать подобных сообщений... |
|
|
|
Поиск в теме | Версия для печати |
Страниц (1): [1] |
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0, скрытых: 0) |
« PHP/Perl » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|