Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Подскажите по написанию кода
цитата
01/11/11 в 21:41
 FXIX
к тому что если на выходе будет 0 - ты долго будешь искать ошибку.
цитата
01/11/11 в 21:45
 FXIX
file_put_contents возвращает кол-во записаных байт. при ошибке возвращает FALSE.

в конструкцию

if (! file_put_contents) {}

влетают все булевы (true\false), числа и строки 0, "0", "", и просто null.

if (file_put_contents()=='FALSE') {выход}
цитата
01/11/11 в 21:54
 Yacc
Ты прав, конечно, надо бы написать

if( false === file_put_contents(...

но ему ведь "для себя на локалке генерить". icon_smile.gif

А так тут много чего дописать надо. icon_smile.gif
цитата
01/11/11 в 22:21
 Lexikon
спасибо, я кроме этого еще стараюсь разбираться что да как работает, так что любые коментарии не лишнии, далее еще от себя доработаю это дело отпишу тут. smail54.gif
цитата
02/11/11 в 09:38
 Lexikon
вот еще такой момент, когда я пересылаю данные в которых содержиться html код, он немного не корректно вставляется в страницу, вместо обычшых кавычек ", вставляются кавычки с обратным слешем вот так
width=\"640\" height=\"500\"
это нужно отдельно писать переменную и через preg_replace() убирать это все, в момент создания файла и записи в него, с помощью регулярных выражений?
Или там все проще, помню встречал функцию которая перекодирует HTML символы в спец коды, но как я понимаю тогда нужно все закодироовать и потом сново раскодировать и вставить.
цитата
02/11/11 в 09:43
 ibiz
попробуй делать так: $html = stripslashes($html); trollface.png
цитата
02/11/11 в 09:44
 hellshouter
Lexikon: заюзай функцию stripslashes($str) перед посылкой данных trollface.png

такие вопросы в гугле решаются за минуту, зацени smail54.gif
цитата
02/11/11 в 09:54
 Lexikon
я так понял что это делается для безопасности, получается что просто нужно раскоментировать.
цитата
02/11/11 в 09:56
 hellshouter
http://php.su/security/?magicquotes
цитата
07/11/11 в 11:11
 Lexikon
Вот что впринципе получилось:

<?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.
И спасибо за помощь, без вас я бы оочень долго капался. А тут уже соображать как то начал. icon_rolleyes.gif
цитата
07/11/11 в 11:35
 ibiz
так попробуй человекопонятным способом делать, например так trollface.png
Код:

list($url, $metatitle, $metadescription) = explode('|', $lines);
$content = str_replace('{url}', $url, $content);
$content = str_replace('{metatitle}', $metatitle, $content);
цитата
09/11/11 в 16:31
 Lexikon
Подскажите как тут правильно заставить сделать замену:


<?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);
подставилось и сгенерилась новая страница
с одним значением понятно, всё создается и подставляется, а когда их несколько
я немогу сообразить
За ранее благодарен!!!
цитата
09/11/11 в 16:46
 Lexikon
icon_smile.gif
вот так сделал
$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);
цитата
09/11/11 в 16:49
 ibiz
Lexikon писал:
Подскажите как тут правильно заставить сделать замену:

Код:

set_time_limit(0);



0 не надо ставить, лучше сделай 300 = 10 минут или 3600 = 1 час исполнения
trollface.png
P.S. еще можно вот так делать "в одну строку", но это не читабельно, сам правильно решил trollface.png
Код:

$content = str_replace('{metatitle}', $meta_title, str_replace('{metadesc}', $meta_desc, str_replace('{embedcode}', $embed_code, str_replace('{embed_desc}', $embed_desc, $content)));
цитата
09/11/11 в 16:58
 Lexikon
спасибо! smail54.gif
в одну строку аж глаза разбежались smail101.gif
цитата
09/11/11 в 18:29
 Alexandur
ibiz: не стыдно издеваться? Там же массивом можно.
Lexikon: я на первой странице дал универсальный пример регулярного.
цитата
09/11/11 в 18:55
 Lexikon
у меня оно не идет, может что-то не так делаю
последнюю строку сделал так

$html = preg_replace('/\{(\w+)\}/e', "\$raws['$1']", $content);
file_put_contents($file_name, $html);

но генериться пустой шаблон
цитата
07/12/11 в 06:31
 Lexikon
вроде всё что хотел доделал, несколько дней с кодом не работал, вчера решил сгенерить немного страниц. Запустил и потом охерел, так как нужно не работает. Стал разбираться но так и не понял в чем причина. Станицы создаются, изображения выкачиваются, переименовываются так как нужно. Но внутри каждого сгенериного файла одно и тоже. Такое впечатление что скрипт прочел первую строку и стал все данные из этой строки пихать в шаблон. Но при этом Закачка и переименование изображений а также генерация идет как нужно.
Подскажите, в чем может быть причина.
Основной код:

<?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
там построчно несколько строк текста
цитата
07/12/11 в 06:56
 Alexandur
Код:

...
$content2 = file_get_contents("face.tpl");

$lines = explode( "\n", $_POST[ "exdata" ] );

$count = count( $lines );


   for( $i = 0; $i < $count; $i += 1 ) {
$content = $content2;
...
цитата
07/12/11 в 08:18
 Lexikon
smail54.gif
огромное спасибо, заработало!
вот только не понял, а почему казалось бы из за того незначимого фактора такой косяк.
Вроде одно прираняли к другому, а оно вон как icon_confused.gif
Стр. « первая   <  1, 2


Эта страница в полной версии