Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 01/11/11 в 21:41 |
к тому что если на выходе будет 0 - ты долго будешь искать ошибку.
|
|
пришел к победе коммунистического труда
|
6
|
|
|
Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 01/11/11 в 21:45 |
file_put_contents возвращает кол-во записаных байт. при ошибке возвращает FALSE.
в конструкцию
if (! file_put_contents) {}
влетают все булевы (true\false), числа и строки 0, "0", "", и просто null.
if (file_put_contents()=='FALSE') {выход}
|
|
пришел к победе коммунистического труда
|
7
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 01/11/11 в 21:54 |
Ты прав, конечно, надо бы написать
if( false === file_put_contents(...
но ему ведь "для себя на локалке генерить".
А так тут много чего дописать надо.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 01/11/11 в 22:21 |
спасибо, я кроме этого еще стараюсь разбираться что да как работает, так что любые коментарии не лишнии, далее еще от себя доработаю это дело отпишу тут.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/11/11 в 09:38 |
вот еще такой момент, когда я пересылаю данные в которых содержиться html код, он немного не корректно вставляется в страницу, вместо обычшых кавычек ", вставляются кавычки с обратным слешем вот так
width=\"640\" height=\"500\"
это нужно отдельно писать переменную и через preg_replace() убирать это все, в момент создания файла и записи в него, с помощью регулярных выражений?
Или там все проще, помню встречал функцию которая перекодирует HTML символы в спец коды, но как я понимаю тогда нужно все закодироовать и потом сново раскодировать и вставить.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 02/11/11 в 09:43 |
попробуй делать так: $html = stripslashes($html);
|
|
|
|
readmode
С нами с 24.05.06
Сообщения: 797
Рейтинг: 488
|
Добавлено: 02/11/11 в 09:44 |
Lexikon: заюзай функцию stripslashes($str) перед посылкой данных
такие вопросы в гугле решаются за минуту, зацени
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/11/11 в 09:54 |
я так понял что это делается для безопасности, получается что просто нужно раскоментировать.
|
|
|
|
readmode
С нами с 24.05.06
Сообщения: 797
Рейтинг: 488
|
Добавлено: 02/11/11 в 09:56 |
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 07/11/11 в 11:11 |
Вот что впринципе получилось:
Код: [развернуть] |
<?php
set_time_limit(0);
$content = file_get_contents('face.tpl');
$lines = explode( "\n", $_POST[ 'exdata' ] );
$count = count( $lines );
for( $i = 0; $i < $count; $i += 1 ) {
$data = explode( $_POST['seperated'], stripslashes($lines[ $i ]) );
$image = file_get_contents($data[0]);
file_put_contents(strtolower(preg_replace( '/\s+/', '-', trim( $data[1] ) ) ).'.jpg', $image );
$file_name = preg_replace( '/\s+/', '-', trim( $data[1] ) ).'.'.$_POST['type'];
if( ! file_put_contents( strtolower($file_name), preg_replace( '/\{DATA([0-9]+)\}/ei', "\$data['$1']", $content ) ) )
die( "can't open file" );
}
?>
|
в форме пишу:
image1.jpg|name_image_and_page|meta_title|meta_description|html_code|description
в результате выкачевается изображение затем генерируется страница по шаблону (у них одинаковые имена)
Единственное это с чем я так и не разобрался, это то что
в шаблоне нужно ставить {data}, а хотелось бы {metatitle} {metadescription} и т.д. А на данный момент неудобно еще тем что начинать нужно с {DATA2} ибо нулевое уходит на адрес где лежит пикса, первая уходит на имя файлов.
Я понимаю что, то что получилось требует доработок, и то что его запихивать на сервер категорически не стоит, но работать на локалке можно.
Хотелось бы услышать критику и что еще нужно данному скриптику чтоб он был стоящим и безопасным.
Как обычно всем +6.
И спасибо за помощь, без вас я бы оочень долго капался. А тут уже соображать как то начал.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 07/11/11 в 11:35 |
так попробуй человекопонятным способом делать, например так
Код: |
list($url, $metatitle, $metadescription) = explode('|', $lines);
$content = str_replace('{url}', $url, $content);
$content = str_replace('{metatitle}', $metatitle, $content);
|
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/11/11 в 16:31 |
Подскажите как тут правильно заставить сделать замену:
Код: [развернуть] |
<?php
set_time_limit(0);
//$content = str_replace('{metatitle}', $meta_title, $content);
//$content = str_replace('{metadesc}', $meta_desc, $content);
//$content = str_replace('{embedcode}', $embed_code, $content);
//$content = str_replace('{embed_desc}', $embed_desc, $content);
$content = file_get_contents('face.tpl');
$lines = explode( "\n", $_POST[ 'exdata' ] );
$count = count( $lines );
for( $i = 0; $i < $count; $i += 1 ) {
list($url_img, $meta_title, $meta_desc, $embed_code, $embed_desc) = explode( $_POST['seperated'], stripslashes($lines[ $i ]) );
$image = file_get_contents($url_img);
file_put_contents(strtolower(preg_replace( '/\s+/', '-', trim( $meta_title ) ) ).'.jpg', $image );
$file_name = strtolower(preg_replace( '/\s+/', '-', trim( $meta_title ) ) ).'.'.$_POST['type'];
if( ! file_put_contents($file_name, str_replace('{metatitle}', $meta_title, $content) ) )
die( "can't open file" );
}
?>
|
вот тут
if( ! file_put_contents($file_name, str_replace('{metatitle}', $meta_title, $content) ) )
die( "can't open file" );
нужно чтоб вот это все
//$content = str_replace('{metatitle}', $meta_title, $content);
//$content = str_replace('{metadesc}', $meta_desc, $content);
//$content = str_replace('{embedcode}', $embed_code, $content);
//$content = str_replace('{embed_desc}', $embed_desc, $content);
подставилось и сгенерилась новая страница
с одним значением понятно, всё создается и подставляется, а когда их несколько
я немогу сообразить
За ранее благодарен!!!
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/11/11 в 16:46 |
вот так сделал
$content = str_replace('{metatitle}', $meta_title, $content);
$content = str_replace('{metadesc}', $meta_desc, $content);
$content = str_replace('{embedcode}', $embed_code, $content);
$content = str_replace('{embed_desc}', $embed_desc, $content);
file_put_contents($file_name, $content);
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 09/11/11 в 16:49 |
Lexikon писал: | Подскажите как тут правильно заставить сделать замену:
|
0 не надо ставить, лучше сделай 300 = 10 минут или 3600 = 1 час исполнения
P.S. еще можно вот так делать "в одну строку", но это не читабельно, сам правильно решил
Код: |
$content = str_replace('{metatitle}', $meta_title, str_replace('{metadesc}', $meta_desc, str_replace('{embedcode}', $embed_code, str_replace('{embed_desc}', $embed_desc, $content)));
|
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/11/11 в 16:58 |
спасибо!
в одну строку аж глаза разбежались
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 09/11/11 в 18:29 |
ibiz: не стыдно издеваться? Там же массивом можно.
Lexikon: я на первой странице дал универсальный пример регулярного.
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 09/11/11 в 18:55 |
у меня оно не идет, может что-то не так делаю
последнюю строку сделал так
$html = preg_replace('/\{(\w+)\}/e', "\$raws['$1']", $content);
file_put_contents($file_name, $html);
но генериться пустой шаблон
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 07/12/11 в 06:31 |
вроде всё что хотел доделал, несколько дней с кодом не работал, вчера решил сгенерить немного страниц. Запустил и потом охерел, так как нужно не работает. Стал разбираться но так и не понял в чем причина. Станицы создаются, изображения выкачиваются, переименовываются так как нужно. Но внутри каждого сгенериного файла одно и тоже. Такое впечатление что скрипт прочел первую строку и стал все данные из этой строки пихать в шаблон. Но при этом Закачка и переименование изображений а также генерация идет как нужно.
Подскажите, в чем может быть причина.
Основной код:
Код: [развернуть] |
<?php
set_time_limit(0);
$content = file_get_contents("face.tpl");
$lines = explode( "\n", $_POST[ "exdata" ] );
$count = count( $lines );
for( $i = 0; $i < $count; $i += 1 ) {
list($url_img, $meta_title, $keyword, $meta_desc, $embed_code, $embed_desc, $payurl) = explode( $_POST["seperated"], stripslashes($lines[ $i ]) );
$image = file_get_contents($url_img);
file_put_contents(strtolower(preg_replace( "/\s+/", "-", trim( $meta_title ) ) ).".jpg", $image );
$keyword = ucfirst($keyword).".";
$file_name = strtolower(preg_replace( "/\s+/", "-", trim( $meta_title ) ) ).".".$_POST["type"];
$quote = file("rand_desc.txt");
srand((double)microtime()*1000000);
$rand_desc = $quote[rand(0,count($quote)-1)];
$content = str_replace("{metatitle}", $meta_title, $content);
$content = str_replace("{keyword}", $keyword, $content);
$content = str_replace("{randdesc}", $rand_desc, $content);
$content = str_replace("{metadesc}", $meta_desc, $content);
$content = str_replace("{embedcode}", $embed_code, $content);
$content = str_replace("{embed_desc}", $embed_desc, $content);
$content = str_replace("{payurl}", $payurl, $content);
file_put_contents($file_name, $content);
}
?>
|
Содержание TPL (face.tpl)
Код: [развернуть] |
TITLE : {metatitle}<br>
KEYWO : {keyword}<br>
RANDT : {randdesc}<br>
METAD : {metadesc}<br>
EMBCO : {embedcode}<br>
EMBDE : {embed_desc}<br>
PAYUR : {payurl}<br>
|
Форма:
Код: [развернуть] |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="description" content="">
<title></title>
</head>
<body style="background-color:#F7F7FB;">
<center>
<form action="script.php" method="post">
<div style="width: 840px; height: 550px; background-color:#CCE4FF; border: 1px solid #5EAAFF; padding: 10px;"><textarea name="exdata" style="border: 1px solid #84BEFF; width: 820px; height: 500px; font-size: 12px; font-family: Arial, sans-serif;"></textarea>
<div style="width: 365px; padding-top: 10px; float:left; padding-left: 15px; text-align:left;"><b>Seperated by :</b> <input type="text" name="seperated" style="width: 5px;"></div>
<div style="width: 280px; padding-top: 14px; float:left; text-align:left;"><b>Type :</b>
<input type="radio" name="type" value="php"> *.php
<input type="radio" name="type" value="shtml"> *.shtml
<input type="radio" name="type" value="html"> *.html</div>
<div style="width: 60px; padding-top: 10px; float:left;"><input type="reset" value="Reset" style="width: 60px; height: 25px;"></div>
<div style="width: 120px; padding-top: 10px; float:left;"><input type="submit" name="submit" value="Generate" style="width: 84px; height: 25px;"></div></div>
</form>
</center>
</body>
</html>
|
Это запись которую скрипт должен обработать:
Код: [развернуть] |
image1.jpg|title1|keyword1|metadesc1|embedvideo1|embedDesc1|URLpaysite1
image2.jpg|title2|keyword2|metadesc2|embedvideo2|embedDesc2|URLpaysite2
image3.jpg|title3|keyword3|metadesc3|embedvideo3|embedDesc3|URLpaysite3
|
есть еще rand_desc.txt
там построчно несколько строк текста
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 07/12/11 в 06:56 |
Код: |
...
$content2 = file_get_contents("face.tpl");
$lines = explode( "\n", $_POST[ "exdata" ] );
$count = count( $lines );
for( $i = 0; $i < $count; $i += 1 ) {
$content = $content2;
...
|
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 07/12/11 в 08:18 |
огромное спасибо, заработало!
вот только не понял, а почему казалось бы из за того незначимого фактора такой косяк.
Вроде одно прираняли к другому, а оно вон как
|
|
|
|