[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Главный раздел » Помощь по Сайтостроению » Вопросы по PHP
Вопросы по PHP
ApocalypseДата: Пятница, 11.07.14, 07:53:24 | Сообщение # 1
Подполковник
Группа: Администратор
Сообщений: 107
Награды: 1
Репутация: 11
Статус: Offline
Здесь задаём вопросы по PHP
 
Al-SherДата: Среда, 16.07.14, 12:02:43 | Сообщение # 2
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Всем привет ;) у меня возникла проблема: база данных не хочет обновляться, причем даже ошибки не выводит :(
вот код
Код
                $date1 = date("Y-m-d G:i");
                 $date2 = $myrows["date_on"];
                 if($date1 > $date2) {
                     $id_vk = $myrow["id_vk"];
                     $resulta = mysql_query("UPDATE `users` SET online='0' WHERE id_vk='$id_vk'");
                     if($resulta != true) echo mysql_error();
по идеи online должно меняться на 0, если время, которое сейчас, меньше времени, которое в базе, но это почему-то не происходит :(
Кстати, заодно задам еще вопрос по JSON, как в нем закодировать всю базу данных, а не только 1 строку? Пытался и через цикл добавлять JSON, и выводить по очереди, и всю базу записать в одну переменную, но всё время JS не может понять JSON :( Заранее всем спасибо :)
 
LisnesДата: Среда, 16.07.14, 19:00:44 | Сообщение # 3
Подполковник
Группа: VIP
Сообщений: 116
Награды: 3
Репутация: 17
Замечания: 0%
Статус: Offline
Цитата Al-Sher
$resulta = mysql_query("UPDATE `users` SET online='0' WHERE id_vk='$id_vk'");
if($resulta != true) echo mysql_error();

Вообще-то такой способ чаще применяют:
Код

$resulta = mysql_query("UPDATE `users` SET online='0' WHERE id_vk='$id_vk'") or die(mysql_error());

Попробуй, может где-то ошибся с синтаксисом или ещё какая-то ошибка.
Если жс не понимает JSON скорее всего сервер выдает ошибку php кода и вместо JSON ты получаешь HTML код. Проверь какой ответ сервера приходит.


Сообщение отредактировал Lisnes - Среда, 16.07.14, 19:02:27
 
Al-SherДата: Среда, 16.07.14, 20:15:43 | Сообщение # 4
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Lisnes, сервер даёт правильный ответ, так как JS разбирает одну строку из бд, а вот несколько не хочет
синтаксис вроде нормальный, я специально JS выводил данные, которые отправляет сервер, там либо написано ArrayArray или JSON в нормальном состоянии
Насчет способа: знаю, просто мне так легче немного) хотя, возможно из-за этого и проблемы, сейчас проверю)


Сообщение отредактировал Al-Sher - Среда, 16.07.14, 20:17:11
 
DefmanДата: Среда, 16.07.14, 20:34:43 | Сообщение # 5
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Если со стороны сервера пытаешься зафигачить json-строку и передать клиенту:

Код
$array = [];
$i = 0;
while($r = mysql_fetch_array($query)) {
$i++;
$array[$i] = json_encode($r);
}
$json_array = json_encode($array);

Вернет JSON-объект типа:

{"0":{"php-to-json array"},"1":{...}}


Сообщение отредактировал Defman - Среда, 16.07.14, 20:35:45
 
Al-SherДата: Среда, 16.07.14, 20:40:38 | Сообщение # 6
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Defman, спасибо, это заработало :)
 
DefmanДата: Среда, 16.07.14, 21:21:43 | Сообщение # 7
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
$array[$i] = json_encode($r) вернет говно в связке с json_encode($array) (без него вернет нормальный JSON). Убери здесь json_encode.
Либо измени $json_array = json_encode($array) на $json_array = $array, но тогда оставь json_encode($r).
Я не знаю, что быстрее))


Сообщение отредактировал Defman - Среда, 16.07.14, 22:48:48
 
Al-SherДата: Пятница, 18.07.14, 07:49:24 | Сообщение # 8
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Defman, спасибо) и правда выходит лучше, но только второй вариант у меня выводил Array, а первый вариант всё как надо)
Кстати, с обновлением бд тоже решил проблему: добавил к циклу запрос к бд и всё заработало(хотя и раньше запрос к бд был, только перед условием).
Теперь у меня возник вопрос. Мне надо сравнивать даты: текущая дата и дата в бд+1 минута, как это можно реализовать? В тоже время мне надо дату в человеческо-понятном языке
Блин, и это я решил :D кому надо, то вот код
Код

                 $date1 = date("Y-m-d G");
                 $date1_1 = date("i") - 1;
                 $date1 = $date1.":".$date1_1;
                 $date2 = $myrowsa["date_on"];


Сообщение отредактировал Al-Sher - Пятница, 18.07.14, 09:44:01
 
DefmanДата: Пятница, 18.07.14, 14:14:10 | Сообщение # 9
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
О_о
Код
$date1 = date("d-m-Y H:i", time()-60);
 
Al-SherДата: Пятница, 18.07.14, 14:24:39 | Сообщение # 10
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Хах, а я костыль придумывал biggrin
 
DefmanДата: Пятница, 18.07.14, 15:03:23 | Сообщение # 11
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Можно еще через mktime, но там слишком огромно получается)
Код
$date1 = date("d-m-Y H:i", mktime(date("H"),date("i")-1,date("s"),date("n"),date("d"),date("Y")))
 
DefmanДата: Пятница, 18.07.14, 15:09:54 | Сообщение # 12
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Или еще проще.
Код
$date = strtotime("-1 minute");

Должно сработать :)
 
Al-SherДата: Четверг, 04.09.14, 15:39:27 | Сообщение # 13
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Всем привет :)
Имею код
Код
    echo "
        $(document).ready(function () {";
        $text = "var form = $(\".chatid\").html();";
        echo $text;
        echo "$.post('ссылка на тот же файл', {form:form});";
        if(isset($_POST["form"])) {
            $form = $_POST["form"];
            /* MySQL запрос */
            do {$form = str_replace('ляля','ялял',$form);
                echo "$(\".chatid\").html(".$form.");";
            }
            while($row = mysql_fetch_array($res));
        }
        echo "
        });";
вопрос: Я вижу что POST запрос проходит, но вот содержимое класса "chatid" не заменяется, в чем я допустил ошибку? Пробовал в SetInterval засунуть, но в итоге получился вечный POST запрос, без изменения в нужном классе
P.S. домены разные, но разрешение на запросы с нужного домена стоит благодаря Access-Control-Allow-Origin


Сообщение отредактировал Al-Sher - Четверг, 04.09.14, 15:43:44
 
DefmanДата: Четверг, 04.09.14, 21:44:17 | Сообщение # 14
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Ну ты намешал) Выводить JS в PHP через JS - супер-ад! Объясни в скайпе, что ты делаешь. Я переделаю скрипт на более-менее нормальный код.
 
Al-SherДата: Четверг, 02.10.14, 20:34:30 | Сообщение # 15
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Помогите составить регулярное выражение :) цель такова:
Проверять строку и если имеется ссылка типа /link или просто link, то заменять её на $_GET["sait"]."/link", то есть добавлять к ссылкам без http:// вывод get переменной sait.
Пробовал делать так
Код
$sait = preg_replace('#href="/(.*)"#iUs', 'href="'.$_GET["sait"].'/$1"', $sait);
, но вышло что заменяются все ссылки(использовать ^ перед / тоже пробовал, там он их переставал менять нормально)
Вопрос решен методом тыка :D


Сообщение отредактировал Al-Sher - Пятница, 03.10.14, 15:03:01
 
RuDДата: Четверг, 16.10.14, 13:00:28 | Сообщение # 16
Лейтенант
Группа: Чатер
Сообщений: 54
Награды: 0
Репутация: 0
Замечания: 20%
Статус: Offline
С трудом нашел готовый скрипт скриншота сайта, была проблема в работе, но проблема решена, осталось выяснить как сделать что бы скриншоты сохранялись количеством? дело в том что скриншот накладывается на прошлый, следовательно заменяет его и прошлый пропадает и ссылка уже битая, а надо что бы все скриншоты хранились в папке.

Код
<?php

function screenshot($url,$ss){
function create_small($name23,$ss)
{
if ($ss>900) $ss=900;if ($ss<16) $ss=16;
list($x, $y, $t, $attr) = getimagesize($name23);
$big=imagecreatefrompng($name23);   
if ($x > $y) {$xs=$ss; $ys=$ss/($x/$y);}
else {$ys=$ss * 3/4; $xs=$ys/($y/$x); }
$small=imagecreatetruecolor ($xs,$ys);
$res = imagecopyresampled($small,$big,0,0,0,0,$xs,$ys,$x,$y);
imagedestroy($big);
imagejpeg($small,$name23);
imagedestroy($small);   
}
$name23 = 'images/screen.png';
$url=@urlencode($url);
$str= file_get_contents( 'http://netrenderer.com/?url='.$url.'&browser=ie11');
preg_match( '#<br clear="all"><img src="(.+?)"#', $str, $out );
$adr = $out[1];
$scr=@file_get_contents($adr);
file_put_contents ($name23,$scr);
create_small($name23,$ss);
$fs=filesize ($name23);
$rez='<img src="' .$name23 .'" border="1"><p>Размер файла: ' .$fs .' байт<p>';
return $rez;
}

?>

<form method="POST" id="form" name="form" action="" accept-charset="utf-8" >
<p>Введите ширину:   
<input type='text' size='2' name='ss' id='ss' maxlength='4' value='300' style='width:30px' onkeypress="if((event.keyCode !=8)&&((event.keyCode < 48)||(event.keyCode > 57))) event.returnValue=false;"></p>
<p>Введите адрес сайта:   
<input type="text" name="url" id="url" value="<?php echo $_REQUEST['url']; ?>" >   
<input type="submit" name="go" value=" пуск " ></p>
</form>

<?php   
if (($_REQUEST['url']!='') && isset($_REQUEST['url'])){   
echo 'Скриншот сайта: <p>' .$_REQUEST['url'] .'</p>';
echo '<p><center>'.screenshot($_REQUEST['url'],$_REQUEST['ss']).'<center></p>';
}
?>


Сообщение отредактировал RuD - Пятница, 17.10.14, 01:13:41
 
НэринсДата: Пятница, 17.10.14, 01:19:36 | Сообщение # 17
Рядовой
Группа: Чатер
Сообщений: 12
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
RuD, Вот чуток модифицировал, теперь название скриншота это адрес сайта без http и www, без слешей ну и конечно же без точек
Код

<?php

$screen_num = 0;

function screenshot($url,$ss){
    function create_small($name23,$ss)
    {
     if ($ss>900) $ss=900;if ($ss<16) $ss=16;
     list($x, $y, $t, $attr) = getimagesize($name23);
     $big=imagecreatefrompng($name23);
     if ($x > $y) {$xs=$ss; $ys=$ss/($x/$y);}
     else {$ys=$ss * 3/4; $xs=$ys/($y/$x); }
     $small=imagecreatetruecolor ($xs,$ys);
     $res = imagecopyresampled($small,$big,0,0,0,0,$xs,$ys,$x,$y);
     imagedestroy($big);
     imagejpeg($small,$name23);
     imagedestroy($small);
    }
    $urlname = str_replace('http://', '', $url); //
    $urlname = str_replace('www', '', $urlname); //
    $url=@urlencode($url);
    $urlname = preg_replace ("/[^a-zA-ZА-Яа-я0-9\s]/","",$urlname);
    $name23 = 'images/'.$urlname.'.png';
    $str= file_get_contents( 'http://netrenderer.com/?url='.$url.'&browser=ie11');
    preg_match( '#<br clear="all"><img src="(.+?)"#', $str, $out );
    $adr = $out[1];
    $scr=@file_get_contents($adr);
    file_put_contents ($name23,$scr);
    create_small($name23,$ss);
    $fs=filesize ($name23);
    $rez='<img src="' .$name23 .'" border="1"><p>Размер файла: ' .$fs .' байт<p>';
    return $rez;
}
?>

<form method="POST" id="form" name="form" action="" accept-charset="utf-8" >
    <p>Введите ширину:
     <input type='text' size='2' name='ss' id='ss' maxlength='4' value='300' style='width:30px' onkeypress="if((event.keyCode !=8)&&((event.keyCode < 48)||(event.keyCode > 57))) event.returnValue=false;">
    </p>
    <p>Введите адрес сайта:
     <input type="text" name="url" id="url" value="<?php echo $_REQUEST['url']; ?>" >
     <input type="submit" name="go" value=" пуск " >
    </p>
</form>

<?
if (($_REQUEST['url']!='') && isset($_REQUEST['url'])){
    echo 'Скриншот сайта: <p>' .$_REQUEST['url'] .'</p>';
    echo '<p><center>'.screenshot($_REQUEST['url'],$_REQUEST['ss']).'<center></p>';
}
?>


Сообщение отредактировал Нэринс - Пятница, 17.10.14, 01:42:01
 
LisnesДата: Пятница, 17.10.14, 01:23:21 | Сообщение # 18
Подполковник
Группа: VIP
Сообщений: 116
Награды: 3
Репутация: 17
Замечания: 0%
Статус: Offline
RuD, проверял работает:

Код
<?php  

$screen_num = 0;

function screenshot($url,$ss){  
function create_small($name23,$ss)  
{  
if ($ss>900) $ss=900;if ($ss<16) $ss=16;  
list($x, $y, $t, $attr) = getimagesize($name23);  
$big=imagecreatefrompng($name23);
if ($x > $y) {$xs=$ss; $ys=$ss/($x/$y);}  
else {$ys=$ss * 3/4; $xs=$ys/($y/$x); }  
$small=imagecreatetruecolor ($xs,$ys);  
$res = imagecopyresampled($small,$big,0,0,0,0,$xs,$ys,$x,$y);  
imagedestroy($big);  
imagejpeg($small,$name23);  
imagedestroy($small);
}  
$url=@urlencode($url);  
$name23 = 'images/'.md5($url).'.png';  
$str= file_get_contents( 'http://netrenderer.com/?url='.$url.'&browser=ie11');  
preg_match( '#<br clear="all"><img src="(.+?)"#', $str, $out );  
$adr = $out[1];  
$scr=@file_get_contents($adr);  
file_put_contents ($name23,$scr);  
create_small($name23,$ss);  
$fs=filesize ($name23);  
$rez='<img src="' .$name23 .'" border="1"><p>Размер файла: ' .$fs .' байт<p>';  
return $rez;  
}  

?>  

<form method="POST" id="form" name="form" action="" accept-charset="utf-8" >  
<p>Введите ширину:
<input type='text' size='2' name='ss' id='ss' maxlength='4' value='300' style='width:30px' onkeypress="if((event.keyCode !=8)&&((event.keyCode < 48)||(event.keyCode > 57))) event.returnValue=false;"></p>  
<p>Введите адрес сайта:  
<input type="text" name="url" id="url" value="<?php echo $_REQUEST['url']; ?>" >
<input type="submit" name="go" value=" пуск " ></p>  
</form>  

<?php
if (($_REQUEST['url']!='') && isset($_REQUEST['url'])){
echo 'Скриншот сайта: <p>' .$_REQUEST['url'] .'</p>';  
echo '<p><center>'.screenshot($_REQUEST['url'],$_REQUEST['ss']).'<center></p>';  
}  
?>
 
RuDДата: Пятница, 17.10.14, 01:50:59 | Сообщение # 19
Лейтенант
Группа: Чатер
Сообщений: 54
Награды: 0
Репутация: 0
Замечания: 20%
Статус: Offline
Нэринс, Lisnes, большое спасибо вам, два дня сам пытался разобраться с помощью гугла, но так и не нашел подходящего ответа

Сообщение отредактировал RuD - Пятница, 17.10.14, 01:51:55
 
RuDДата: Пятница, 17.10.14, 02:09:28 | Сообщение # 20
Лейтенант
Группа: Чатер
Сообщений: 54
Награды: 0
Репутация: 0
Замечания: 20%
Статус: Offline
Lisnes, Нэринс, а если сделать что бы по нажатие кнопки скрин, он сам брал ссылку из адресной строки и делал скрин странички на которой он находиться? если смысл расписал не понятно, то вот пример того что я делаю, древо умений персонажа в игре: http://r2drevo.tk/a.htm
еще есть скрипт который копирует адресную строку:
Цитата Lisnes,Al-Sher

HTML код кнокпи
<button id="copy-button" data-clipboard-text="Copy Me!" title="Click to copy me.">Copy to Clipboard</button>

подключение скриптов
<script src="jquery.js"></script>
<script type="text/javascript" src="jquery.zclip.js"></script>

Скрипт
$("#copy-button").attr("data-clipboard-text","ссылка на сайт" +window.location.href)
var client = new ZeroClipboard( document.getElementById("copy-button") );
client.on( "ready", function( readyEvent ) {
client.on( "aftercopy", function( event ) {
event.target.style.display = "none";
alert("Copied text to clipboard: " + event.data["text/plain"] );
} );
} );

Архив с исходниками скачать можно тут http://rghost.ru/58518895


Сообщение отредактировал RuD - Пятница, 17.10.14, 02:12:43
 
НэринсДата: Пятница, 17.10.14, 02:23:30 | Сообщение # 21
Рядовой
Группа: Чатер
Сообщений: 12
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата RuD
Lisnes, Нэринс, а если сделать что бы по нажатие кнопки скрин, он сам брал ссылку из адресной строки и делал скрин странички на которой он находиться? если смысл расписал не понятно, то вот пример того что я делаю, древо умений персонажа в игре: http://r2drevo.tk/a.htm

Ну если я правильно понял то как то так, а если без перезагрузки то это нужен ajax а в нём я не силён
Просто подгони как тебе надо, можно убрать ширину и оставить только форму с кнопкой, тогда ширина будет 1980 по дефолту(ну можно поставить любую свою)
Код

<?php

$screen_num = 0;

function screenshot($url,$ss = '1980'){
   function create_small($name23,$ss = '1980')
   {
    if ($ss>900) $ss=900;if ($ss<16) $ss=16;
    list($x, $y, $t, $attr) = getimagesize($name23);
    $big=imagecreatefrompng($name23);
    if ($x > $y) {$xs=$ss; $ys=$ss/($x/$y);}
    else {$ys=$ss * 3/4; $xs=$ys/($y/$x); }
    $small=imagecreatetruecolor ($xs,$ys);
    $res = imagecopyresampled($small,$big,0,0,0,0,$xs,$ys,$x,$y);
    imagedestroy($big);
    imagejpeg($small,$name23);
    imagedestroy($small);
   }
   $urlname = str_replace('http://', '', $url); //
   $urlname = str_replace('www', '', $urlname); //
   $url=@urlencode($url);
   $urlname = preg_replace ("/[^a-zA-ZА-Яа-я0-9\s]/","",$urlname);
   $name23 = 'images/'.$urlname.'.png';
   $str= file_get_contents( 'http://netrenderer.com/?url='.$url.'&browser=ie11');
   preg_match( '#<br clear="all"><img src="(.+?)"#', $str, $out );
   $adr = $out[1];
   $scr=@file_get_contents($adr);
   file_put_contents ($name23,$scr);
   create_small($name23,$ss);
   $fs=filesize ($name23);
   $rez='<img src="' .$name23 .'" border="1"><p>Размер файла: ' .$fs .' байт<p>';
   return $rez;
}
?>

<form method="POST" id="form" name="form" action="" accept-charset="utf-8" >
   <p>Введите ширину:
    <input type='text' size='2' name='ss' id='ss' maxlength='4' value='300' style='width:30px' onkeypress="if((event.keyCode !=8)&&((event.keyCode < 48)||(event.keyCode > 57))) event.returnValue=false;">
   </p>
   <input type="submit" name="go" value=" пуск " >
</form>

<?
$path = "http://" . $_SERVER['SERVER_NAME'] . "/" . $_SERVER['REQUEST_URI'];
if ($_POST['go']){
   echo 'Скриншот сайта: <p>' .$path.'</p>';
   echo '<p><center>'.screenshot($path,$_POST['ss']).'<center></p>';
}
?>


Сообщение отредактировал Нэринс - Пятница, 17.10.14, 02:33:53
 
RuDДата: Пятница, 17.10.14, 11:50:36 | Сообщение # 22
Лейтенант
Группа: Чатер
Сообщений: 54
Награды: 0
Репутация: 0
Замечания: 20%
Статус: Offline
Нэринс, я конечно не понимаю, но он чей то рабочий стол скринит)
http://zbst.zz.vc/2.php


Сообщение отредактировал RuD - Пятница, 17.10.14, 15:12:19
 
НэринсДата: Пятница, 17.10.14, 15:57:09 | Сообщение # 23
Рядовой
Группа: Чатер
Сообщений: 12
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата RuD
Нэринс, я конечно не понимаю, но он чей то рабочий стол скринит) http://zbst.zz.vc/2.php

Прикольно, но странно, поставь кодировку для начала utf-8, ща посмотрю в чём дело
 
Al-SherДата: Пятница, 17.10.14, 16:04:22 | Сообщение # 24
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Нэринс, я посмотрел, у них браузер ie11 лагает, выбери 8 или 10
 
НэринсДата: Пятница, 17.10.14, 16:10:55 | Сообщение # 25
Рядовой
Группа: Чатер
Сообщений: 12
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата Al-Sher
Нэринс, я посмотрел, у них браузер ie11 лагает, выбери 8 или 10

Да дело явно не в скрипте, ибо даже тот что работал до этого и который я не трогал теперь тоже не работает
 
RuDДата: Суббота, 18.10.14, 16:34:54 | Сообщение # 26
Лейтенант
Группа: Чатер
Сообщений: 54
Награды: 0
Репутация: 0
Замечания: 20%
Статус: Offline
очень часто стал не работать сервер, 8-10 браузер тоже не работает, можно подключить к http://www.s-shot.ru ?
 
НэринсДата: Суббота, 18.10.14, 18:43:34 | Сообщение # 27
Рядовой
Группа: Чатер
Сообщений: 12
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата RuD
очень часто стал не работать сервер, 8-10 браузер тоже не работает, можно подключить к http://www.s-shot.ru ?

Не знаю ну если у них есть такая услуга то конечно, просто чуток запрос поменять нужно будет
 
RuDДата: Воскресенье, 19.10.14, 16:31:31 | Сообщение # 28
Лейтенант
Группа: Чатер
Сообщений: 54
Награды: 0
Репутация: 0
Замечания: 20%
Статус: Offline
Нэринс, у них на главной есть API и документация, но я в пхп не знаю ничего, методом тыка попробовал заменить ссылки, но не получилось, сейчас попробую найти другой хостин с таким скриптом..

Сообщение отредактировал RuD - Воскресенье, 19.10.14, 16:56:06
 
RuDДата: Воскресенье, 19.10.14, 16:58:49 | Сообщение # 29
Лейтенант
Группа: Чатер
Сообщений: 54
Награды: 0
Репутация: 0
Замечания: 20%
Статус: Offline
Буду любезен в помощи установки "сам себе сервер скриншотов - http://habrahabr.ru/post/111188/ "
В установки ничего не могу понять, но ее там вроде не много, расскажите в порядочной степени как надо устанавливать? (желательно расписать как для чайника) я думаю это решит мои проблемы раз и на всегда)


Сообщение отредактировал RuD - Воскресенье, 19.10.14, 17:00:34
 
Al-SherДата: Воскресенье, 19.10.14, 21:32:13 | Сообщение # 30
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
RuD, для этого нужен собственный сервер, ну или хотя бы VDS
А вот использовать
Цитата RuD
http://www.s-shot.ru ?
можно, сейчас попробую изменить код
UPD вот код
Код

<?php  

$screen_num = 0;  

function screenshot($url,$ss = '1980'){  
$urlname = str_replace('http://', '', $url);  
$urlname = str_replace('www', '', $urlname);  
$urlname = preg_replace ("/[^a-zA-ZА-Яа-я0-9\s]/","",$urlname);  
$url = file_get_contents( 'http://mini.s-shot.ru/?'.$url);   
$name23 = "images/".$urlname.".png";
file_put_contents($name23,$url);
$rez='<img src="'.$name23.'" border="1"><p>Размер файла: ' .$fs .' байт<p>';  
return $rez;  
}  
?>  

<form method="POST" id="form" name="form" action="" accept-charset="utf-8" >  
<p>Введите ширину:  
<input type='text' size='2' name='ss' id='ss' maxlength='4' value='300' style='width:30px' onkeypress="if((event.keyCode !=8)&&((event.keyCode < 48)||(event.keyCode > 57))) event.returnValue=false;">  
</p>  
<input type="submit" name="go" value=" пуск " >  
</form>  

<?  
$path = "http://" . $_SERVER['SERVER_NAME'] . "/" . $_SERVER['REQUEST_URI'];  
if ($_POST['go']){  
echo 'Скриншот сайта: <p>' .$path.'</p>';  
echo '<p><center>'.screenshot($path,$_POST['ss']).'<center></p>';  
}  
if(isset($_GET["www"])) echo "Test";
?>


Сообщение отредактировал Al-Sher - Воскресенье, 19.10.14, 22:07:41
 
RuDДата: Вторник, 18.11.14, 12:13:21 | Сообщение # 31
Лейтенант
Группа: Чатер
Сообщений: 54
Награды: 0
Репутация: 0
Замечания: 20%
Статус: Offline
Lisnes,
Цитата Lisnes
RuD, проверял работает:


Добрый день, возникла проблема, не умею пользоваться пхп скриптами, как вывести ссылку полученного скриншота в этом коде?
таким образом:
Код
<a href="ссылка на изображение">Полученный скриншот</a>


Сообщение отредактировал RuD - Понедельник, 24.11.14, 23:08:49
 
Al-SherДата: Среда, 19.11.14, 17:08:14 | Сообщение # 32
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
RuD, ну возвращай вместо картинки нужную ссылку или засунь туда ссылку.В общем изменяй
Цитата RuD
$rez='<img src="' .$name23 .'" border="1"><p>Размер файла: ' .$fs .' байт<p>';
это, где $name23 = ссылка на изображение
 
Al-SherДата: Суббота, 22.11.14, 19:16:23 | Сообщение # 33
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Помогите составить регулярку определяющую значение(value) у активного option. Пример того, из чего выбирать
Код
<option value="1">Рядовой</option><option value="2" selected>Сержант</option><option value="3">Лейтенант</option><option value="4">Майор</option><option value="5">Подполковник</option><option value="6">Полковник</option><option value="7">Генерал-майор</option><option value="8">Генерал-лейтенант</option><option value="9">Генерал-полковник</option><option value="10">Генералиссимус</option>
 
DefmanДата: Суббота, 22.11.14, 20:32:02 | Сообщение # 34
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Код
#<option\svalue=\"([0-9]+)\"\sselected>#isu


Сообщение отредактировал Defman - Суббота, 22.11.14, 20:32:29
 
Al-SherДата: Воскресенье, 23.11.14, 10:18:23 | Сообщение # 35
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Defman, почему то он всё время выводит 1, даже если selected стоит у другого
Делал так:
Код
$rank = preg_match('#<option\svalue=\"([0-9]+)\"\sselected>#isu',$gett,$rank);

Решил вопрос с помощью API Ucoz


Сообщение отредактировал Al-Sher - Воскресенье, 23.11.14, 14:30:23
 
DefmanДата: Воскресенье, 23.11.14, 13:09:25 | Сообщение # 36
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Не знаю, у меня все работает. Вот тест с PHP live regex: http://www.phpliveregex.com/p/8jx
 
LisnesДата: Воскресенье, 23.11.14, 16:56:40 | Сообщение # 37
Подполковник
Группа: VIP
Сообщений: 116
Награды: 3
Репутация: 17
Замечания: 0%
Статус: Offline
Al-Sher, у меня тоже все сработало в тесте что Defman предоставил
 
Al-SherДата: Четверг, 19.02.15, 10:23:26 | Сообщение # 38
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Имею вот такой код
Код
$content = preg_replace('/<IF (.*) >/ms', '<?php if(\$1) { ?>', $content);

и он работает, но имеется одна проблема, а именно: он не выводит php коды, только <!--?php if($1) { ?-->
Как я выяснил проблема в том, что я беру код с помощью file_get_contents, но мне это необходимо, так как код достается именно из файлов и после этого строка форматируется в нужный вид. Подскажите способ решения данной проблемы
Хотя возможна проблема в том, что я вывожу результат с помощью echo
Решил проблему с помощью eval


Сообщение отредактировал Al-Sher - Четверг, 19.02.15, 14:42:37
 
DefmanДата: Суббота, 21.02.15, 17:17:49 | Сообщение # 39
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Можно я отрежу тебе руки, чтобы ты более никогда не использовал eval? И да: для использования условий в шаблоне лучше использовать короткую форму:

Код
<?php if (statement): ?>
HTML stuff
<?php endif; ?>
(можно убрать после "<?" слово "php", если "short_open_tag" в php.ini равен On)

Если ты пишешь свой шаблонизатор, то тебе нужно ГЕНЕРИРОВАТЬ PHP файлы из файлов твоего формата (например /tp/index.tpl должен генерироваться в /tpl/php/index.php) и подгружаться уже в index.php в корне сайта (тем же include). По крайней мере так работал мой шаблонизатор. В остальных случаях ты делаешь слишком дикий говнокод


Сообщение отредактировал Defman - Суббота, 21.02.15, 17:18:58
 
Al-SherДата: Суббота, 21.02.15, 18:58:24 | Сообщение # 40
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата Defman
<?php if (statement): ?>
HTML stuff
<?php endif; ?>
Такой код отказывается работать как минимум с переменными шаблонизатора(код типа {VAR}). Смысл делать работу пользователю труднее? Я пытался написать шаблонизатор простым для пользователя.
Цитата Defman
никогда не использовал eval
В первый раз использовал его, и то только потому, что это единственный способ, который я нашел в других шаблонизаторах.
Цитата Defman
например /tp/index.tpl должен генерироваться в /tpl/php/index.php
всё сделано на примере функции:
Вызываем функцию, давая ей код, и она заменяет все встроенные коды на нужные


Сообщение отредактировал Al-Sher - Суббота, 21.02.15, 18:59:00
 
LisnesДата: Суббота, 21.02.15, 19:08:29 | Сообщение # 41
Подполковник
Группа: VIP
Сообщений: 116
Награды: 3
Репутация: 17
Замечания: 0%
Статус: Offline
Al-Sher, зачем делать в php коде встроенные коды? Обычные переменные вместо них делай.

Или я что-то не так понял?
 
DefmanДата: Суббота, 21.02.15, 21:11:11 | Сообщение # 42
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
1. Для переменных типа {VAR} есть <?=$var?>
2. Покажи мне шаблонизатор, где используется eval. Эта функция ужасна и должна быть выпилена в PHP 7, имхо.
3. Компиляция в файл более логична и удобна.
 
Al-SherДата: Суббота, 21.02.15, 21:14:40 | Сообщение # 43
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата Defman
Для переменных типа {VAR} есть <?=$var?>
не очень легко писать переменные типа $var["var"], намного удобнее заменить их на простые переменные типа {VAR} заранее(прописывать $var = $var["var"] займет слишком много места)
Цитата Defman
Покажи мне шаблонизатор, где используется eval
вот https://github.com/esud/separate/blob/master/src/SeparateTemplate.php строка 369
 
DefmanДата: Суббота, 21.02.15, 21:21:47 | Сообщение # 44
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Цитата Al-Sher\]не очень легко писать переменные типа $;var["var"
, намного удобнее заменить их на простые переменные типа {VAR} заранее(прописывать $var = $var["var"] займет слишком много места)

Я ничего не понял.

>1 star
>authored on Jan 8, 2013
Этому шаблонизатору 2 года (!!!) и всего лишь 1 (!!!) звезда от самого автора. Я бы с трудом назвал это хорошим примером шаблонизатора (да и нехорошим тоже), потому что от eval отказываются везде, где только можно (в т.ч. и в шаблонизаторах). Но ты, конечно, делай так, как считаешь нужным. Слушать дяденек со стажем работы с PHP в 4-5 лет - это глупости ;)


Сообщение отредактировал Defman - Суббота, 21.02.15, 21:26:27
 
Al-SherДата: Суббота, 21.02.15, 21:40:51 | Сообщение # 45
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата Defman
потому что от eval отказываются везде
хотя бы показал его недостатки...
Цитата Defman
Слушать дяденек со стажем работы с PHP в 4-5 лет - это глупости
не надо стажем давить, я с php работаю с 2012
Данный способ я стал рассматривать лишь потому, что я понял его логику легко, да и к тому же пишу я простенький шаблонизатор в один файлик
Цитата Defman
Я ничего не понял.
запись шаблона в общем хочу сократить и заменить части массивов на обычные переменные
 
DefmanДата: Суббота, 21.02.15, 21:48:01 | Сообщение # 46
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Цитата Al-Sher
я с php работаю с 2012

А я с 2010, однако ты почему-то не знаешь о том, что eval - зло, а я - знаю. Парадокс?
http://php.net/manual/ru/function.eval.php
Цитата
Использование eval() может быть очень опасно, поскольку позволяет исполнить произвольный код. Использование данной функции не рекомендуется. Если вы полностью убеждены, что нет иного способа воспроизведения необходимого функционала, обратите особое внимание на исключения обработки таким образом данных, вводимых пользователем, без специальной обработки и валидации.

Я бы тебе порекомендовал посмотреть на то, как выглядит PHP код в 2014-2015 годах. Просто для общего развития :) Заодно узнаешь о том, какие функции пора забросить, а какие - начать использовать. Ты сейчас все еще сидишь на пыхе 2012 года (ну по крайней мере похоже на то: использование mysql_ функций, eval() и прочие вещи). Не стесняйся спрашивать помощи (да хотя бы у меня, я с радостью помогу).
А, ты еще просил недостатки eval...
Думаю, что моей цитаты про выполнение произвольного кода хватит за глаза :)


Сообщение отредактировал Defman - Суббота, 21.02.15, 21:52:47
 
Al-SherДата: Суббота, 21.02.15, 21:58:42 | Сообщение # 47
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата Defman
исполнить произвольный код.
если не давать доступа всем подряд менять шаблон, то это не проблема. То что дизайнер в него запустит, это уже его проблема
Если предложишь другой способ работы примерного кода
Код
$content = preg_replace('/<IF (.*) >/ms', '<?php if(\$1) { ?>', $content);
то буду благодарен. Сижу я и правда на "старом" php, так как всегда справлялся их возможностями, минусы - вид кода и немного безопасность(но опять же всё безопасно, если дизайнер знает за что отвечает его код и не дает доступ в админку всем подряд)
Спрашивать помощи я не стесняюсь, просто не очень хочется переписывать весь код(а щас придется и вывод полностью переписывать(не только шаблонизатора)). В общем буду благодарен, если подскажешь как выполнять код выше или покажешь код простого шаблонизатора, имеющего возможность замены необходимых переменных и работу условий :)
P.S. о том недостатке я знал и использовал его


Сообщение отредактировал Al-Sher - Суббота, 21.02.15, 22:00:51
 
DefmanДата: Суббота, 21.02.15, 22:03:05 | Сообщение # 48
Майор
Группа: VIP
Сообщений: 91
Награды: 1
Репутация: 5
Замечания: 0%
Статус: Offline
Ну без замен <IF> на аналогичное условие в PHP - никак. Я говорю тебе про eval, от которого надо тебе отказаться и компилировать шаблон в PHP файл. Я когда-то писал шаблонизатор и он действовал по похожему методу (замена определенных слов на аналогичные конструкции в PHP), но только скомпилированный код я не в eval запускал, а в обычный php файл и просто инклюдил его.
 
Al-SherДата: Суббота, 21.02.15, 22:10:42 | Сообщение # 49
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
Цитата Defman
в обычный php файл и просто инклюдил его.
я пытаюсь сделать что-то подобное такому:
Все блоки шаблона лежат в определенной папке, админк/дизайнер может перемещать/добавлять/удалять эти блоки, для этого я написал функцию вывода и вывожу с помощью него
сама функция
Код
    global $error;
if($url != "") {
   if(file_exists( "./block/".$url) == true) {GReplace(file_get_contents("./block/".$url));}
    else $error= "Данный блок не найден";
}

функция GReplace производит замену всех переменных.
Раньше я использовал echo GReplace(без eval), но потом понадобилось создание условий и единственный способ который я придумал был с eval, поэтому я и стал использовать его, вместо echo


Сообщение отредактировал Al-Sher - Суббота, 21.02.15, 22:11:30
 
defaultNickДата: Суббота, 25.04.15, 18:51:52 | Сообщение # 50
Рядовой
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Замечания: 0%
Статус: Offline
Всем привет!

Ребят, такой вопрос:

Я использую api ucoz парсер

Код
<?php    

$___notjson = 1;    

$context = stream_context_create( // создаём контекст    
                      array(    
                       'http' => array( // в качестве транспортного протокола будет использоваться http://    
                        'method' => 'GET', // метод запроса - GET    
                        'header' => 'Content-Type: text/xml', // xml    
                        'timeout' => 8 // время на соединение с сервером - 8 сек    
                       )    
                      )    
);    

// получаем содержимое (XML-код) страницы http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172    
$page = file_get_contents('http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172', false, $context);    

// разбираем полученный XML в массив $xml    
$xml = xmlrpc_decode($page, 'utf8');    

// отображаем какую-нибудь информацию из полученного    

// например, заголовок материала    
echo $xml['TITLE'];    

// или посмотрим всё содержимое массива    
print_r($xml);    

?>


Хотел спросить, может кто в курсе, как сделать так...

В строке:
Код
$page = file_get_contents('http://blog.ucoz.ru/api/blog/ucoz_2010/2011-01-01-172', false, $context);


Пишем не полный путь к новости а только ссылка к модулю:
Код
$page = file_get_contents('http://blog.ucoz.ru/api/blog/', false, $context);


А уже на выходе подставить остальное
Код
ucoz_2010/2011-01-01-172


То есть если файл в котором размещен парсер будет называтся например ucoz.php:

http://сайт.ру/ucoz.php?q=ucoz_2010/2011-01-01-172 - получение новости посредствам подставленого id этой новости.
 
Форум » Главный раздел » Помощь по Сайтостроению » Вопросы по PHP
  • Страница 1 из 1
  • 1
Поиск: