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

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

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

Strict Standards: Resource ID#27 used as offset, casting to integer (27) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Проверка имени и создание .txt файла на php
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


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

> Без описания
Termit1987
Отправлено: 25 Февраля, 2008 - 07:05:13
Post Id


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);


Буду всем признателен за помощь!
 
 Top
Furax
Отправлено: 25 Февраля, 2008 - 08:07:14
Post Id



Бледнотик


Покинул форум
Сообщений всего: 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.
 
 Top
Termit1987
Отправлено: 25 Февраля, 2008 - 08:49:04
Post Id


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)

 
 Top
Furax
Отправлено: 25 Февраля, 2008 - 09:23:06
Post Id



Бледнотик


Покинул форум
Сообщений всего: 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>
 
 Top
Termit1987
Отправлено: 25 Февраля, 2008 - 09:56:55
Post Id


Newbie


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2008  

Карма 0




И снова спасибо, все работает. Но снова есть вопросы:

1)файл создается без расширения. Можно ли как нибудь сделать что бы расширение было txt

2) после нажатия на кнопку Создать файл, файл создается но в окне браузера появляеться странный код:
CODE:
Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25

Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25

Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25

Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25

Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25

Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25

Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25

Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25

Warning: Wrong parameter count for strpos() in y:\home\localhost\www\lab2.php on line 25
Неверное имя файла! Плохие символы выделены: cvx>><>>font color=red>>><>>b>\>><>>>><>>font color=red>>><>>b>/>><>>/b>>><>>/font>b>>><>>>><>>font color=red>>><>>b>/>><>>/b>>><>>/font>font>

Для наглядночти я приклеил изображения...

Можно ли это как нибудь решить?
Прикреплено изображение (Нажмите для увеличения)
765.jpg
 
 Top
Termit1987
Отправлено: 25 Февраля, 2008 - 12:29:44
Post Id


Newbie


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2008  

Карма 0




Ну так что, никто мне помочь с моей проблемой не сможет? Проблемы
 
 Top
ETC Администратор
Отправлено: 25 Февраля, 2008 - 13:25:52
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




Termit1987
А вы в курсе, что форум не является чатом, что сегодня выходной день, что вообще у людей есть свои дела, что вам ответят, когда захотят, что отвечать вам не обязан никто, что вы не имеете права поднимать тему глупыми вопросами типа «никто мне помочь не сможет?», нет? Вот имейте ввиду.
Когда будет у людей время, вам помогут. Сидите и молча ждите.
 
 Top
Termit1987
Отправлено: 25 Февраля, 2008 - 15:01:43
Post Id


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 Извини, если я что то сделал не правильно. В дальнейшем я буду стараться избегать подобных сообщений... Улыбка
 
 Top
Furax
Отправлено: 25 Февраля, 2008 - 21:29:50
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Termit1987
Виноват - я не учёл, что при выделении тегами сами теги могут также содержать "плохие" символы. Нужно заменить вот этот цикл:
CODE:
foreach ($symbols as $symbol)
if (strpos($name)!==FALSE)
$name = str_replace($symbol, '<font color=red><b>'.htmlSpecialChars($symbol).'</b></font>', $name);
на
CODE:
$smb = array();
foreach ($symbols as $s) $smb[$s] = '<font color=red><b>' . htmlSpecialChars($s) . '</b></font>';
$name = strtr($name, $smb);
 
 Top
Termit1987
Отправлено: 26 Февраля, 2008 - 01:11:53
Post Id


Newbie


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2008  

Карма 0




Furax Огромное тебе спасибо. Все работает. Вот теперь сижу и пытаюсь разобраться в коде)))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


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

[Script Execution time: 0.0507]     [ 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