Показать сообщение отдельно
  #18 (permalink)  
Старый 27.10.2015, 15:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989



И зачем вы берет код, который я написал ради пояснения "есть/нет параметра запроса" берет себе как рабочий? Поясняю детально его:

var o = $('#box') //в переменной "o" кешируем объект #box, так как мы к нему будет не раз обращаться 
        .click(function() { //устнавливем обработку щелчка по объекту #box 
        var p = o.data('p') ^ 1; //получаем значение переключателя "p" и изменяем его бит - 0 будет меняться на 1, и наоборот - 1 меняться на 0
        var csstop = "<?php echo $project;?>"; //это ваше не понятно почему здесь взялось, и что есть "плохо"
        o.data({p: p}); //запоминаем изменение бита "p"
        //запрашиваем сервер и, если, "p" равно 1, то подставляем в запрос get-параметр, иначе запрос будет без него
        //то есть get-параметр будет передаваться на сервере черз один раз
        o.load('/inc/info/one.php' + (p ? '?name='+ csstop +'' : ''))
    })
    .data({p: 1}) //определим бит переключателя определяющего передачу get-параметра, который будет храниться в объекте #box


То есть этот код работает как триггер - есть на выходе сигнал, нет на выходе сигнала. А оно вам надо?

Суть ведь не в том чтобы впихнуть ваш $project в JS код, а в том как он завязан на логике работы вашего скрипта, что от него зависит. А что у вас теперь получилось?

Ваш серверный код так же обилует множеством ненужных промежуточных переменных. А ведь все проще:

<?php
$projectx = "http://".$project;
         
function isSiteAvailable($projectx) {
    // проверка на валидность представленного url
    if(!filter_var($projectx, FILTER_VALIDATE_URL)) return 'error';
  
    // создаём curl подключение
    $cl = curl_init($projectx);
    curl_setopt($cl,CURLOPT_CONNECTTIMEOUT,10);
    curl_setopt($cl,CURLOPT_HEADER,true);
    curl_setopt($cl,CURLOPT_NOBODY,true);
    curl_setopt($cl,CURLOPT_RETURNTRANSFER,true);
 
    // получаем ответ
    $response = curl_exec($cl);
 
    curl_close($cl);
    
    $project = preg_replace("/[^a-zа-я0-9-.]+/is","",$_GET["name"]);
    
    if ($response) return '<img style="vertical-align:-5px;" src="/images/online.png"></img> <font color="#0dd82e">Работает</font>';
    
    else  {
        if(file_exists('../../images/screens/'.$project.'.png')) unlink('../../images/screens/'.$project.'.png');
  
        mysql_query("update `ca` set `type`='0' where `link`='".$project."'");
        
        return '<img style="vertical-align:-5px;" src="/images/offline.png"></img> <font color="red">Не работает</font>';
    }
} 

if(isset($projectx)) echo isSiteAvailable($projectx);
?>


И теперь у вас этот код будут работать через раз по разному сценарию, так как используя мой пример $_GET["name"] будет через раз, и обновление:

mysql_query("update `ca` set `type`='0' where `link`='".$project."'");

просто бессмысленное. А ведь должна же быть некая логика. А ее нет сейчас вообще.
Ответить с цитированием