отображение номера цикла в html

Тема в разделе "PHP", создана пользователем guru85, 8 фев 2011.

Модераторы: latteo
  1. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    Нужна помощь, есть автопостер, скрипт состоит из двух частей первая визуальная с формами и с хтмл тегами, вторая непосредственно сам скрипт. после заполнения форм нажимаем кнопку пуск, запускаем скрипт, в скрипте начинается обработка 1000 циклов. Вопрос как увидеть в реальном времени каой цикл на данный момент обрабатывается? ведь после нажатия кнопки пуск с визуально странички перекидывает на скрипт и пока он не завершит работу отчет невиден. вот пример визуальной странички
    PHP:
    form method="post" action="submiter.php">
    <
    p>
      <
    label for="url"URL</label>
      <
    textarea name="url" cols="40" rows="10" id="url"></textarea>
      </
    p>
    <
    input type="submit" name="start" value="Пуск" />
    и часть скрипта
    PHP:
    for ($i=0;$i<1000;$i++)
     {
    тут всякие дела }
    визуальная страничка index.php сам скрипт submiter.php
     
  2. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    ob_start();

    тут цикл и все что надо выводить.
    каждую итерацию должно выбрасывать в браузер
    ob_flush();
    flush();
     
  3. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    да получилось о вот в таком виде
    PHP:
    номер цикла
    0
    номер цикла
    1
    а хотелось бы чтобы заменялось одно на другое
     
  4. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    749
    Симпатии:
    220
    Что значит одно на другое, пример приведите хотя бы.
     
  5. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    при выводе номера цикла старое значение не стирается, просто добавляется новое... В итоге будет запись типа 12345678910111213....
    guru85 попробуй применить ява скрипт... например так:
    PHP:
    <form id=for action='' method=get><input type=button id=counter value='dd'>
    <?php
    for ($i=0;$i<1000;$i++)
     {
    ?>
     <script language="JavaScript">document.getElementById("counter").value = "<?php echo $i?>"; </script>
    <?php
     
    }
    ?>
    тогда номер цикла будет отображаться на кнопочке, заменяя новым значением старое... Одно НО... скорость обработки цикла настолько большая, что скорее всего ты увидишь только последнее значение 999. Если хочешь контролировать процесс можешь сменить приведенный ява скрипт на alert("<?php echo $i; ?>");
    Только будь готов кликать 1000 раз на кнопочку "Ок" :))))
     
  6. komyak

    komyak

    Регистр.:
    4 фев 2009
    Сообщения:
    482
    Симпатии:
    183
    Как я делаю- пишу текущий цикл в файл, а вывожу в фрейме через рефреш, в форме с настройками.
     
  7. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    не думаю что скорость будет большая, скрипт выполняет достаточно много задач за один цикл, это же сабмитер он отправляет данные,а это я так понимаю больше зависит от скорости интернет соединения. у меня еще два вопроса.
    1. есть форма в как я уже называл визуальном файле index.php например
    PHP:
    <label for="blogurl">URL</label>
      <
    textarea name="blogurl" cols="40" rows="10" id="blogurl"></textarea>
      </
    p>
    скрипт (файл submiter.php) считает кол во заполненных строк в форме и передает их в переменную задавая тем самым число интераций цикла for
    PHP:
     if (!empty($_POST ['blogurl'])) {$url=$_POST ['blogurl'];} else{  echo ('<h1>Enter Blog Url!!!</h1>');exit;}
       
    $masurl=explode("\n",$url);
       
    $for=(trim(count($masurl))); // формируем число циклов из колличества урлов
    for ($i=0;$i<$for;$i++)
    Задача: вывести число заполненных строк сразу внизу формы при заполнении в визуально файле, как это реализовать?
    2. Как поставить защиту чо бы открывались все php файлы скрипта после ввода пароля и полный запрет на открытие файла submiter.php путем ввода урла, разрешить только с кнопки пуск в визуальном файле index.php для доступа к которому так же необходимо ввести пароль.
    З.Ы. Пытаюсь изучит php с яваой пока вообще не разобрался.
     
  8. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Посчитать количество строк, так сказать в реал-тайме, может такой ява скрипт:
    PHP:
    <script language="JavaScript">
    function 
    textareaCurLineNum(obj)
    {
     
    document.forms[0].counter.value obj.value.split(/[\n]/g).length;
    }
    </script>


    <form>
    <textarea name="blogurl" cols="40" rows="10" id="blogurl" onkeyup="javascript:textareaCurLineNum(this); "></textarea>  <br>
    Строк заполнено: <input type=text id=counter value="0">
            </form>
    Я надеюсь сообразишь как применить его для своей формы...
    Да прочитай как выглядит иерархия объектов документа в ява скрипте ибо если у тебя на странице не одна форма есть то функция работать будет не туда куда нужно!!! (имею ввиду forms[0])
    Для того что бы открывались все php файлы скрипта после ввода пароля создай один файл, который будет производить аутентификацию пользователя например по куки...
    То есть проверит есть ли у пользователя определённый куки с определённым содержанием... если нету -предложить форму ввода имени и пароля... если пароль и имя верные - то записать пользователю куки...
    Этот файл подгружать инклудом в начале каждого рнр файла... Ну или что то в этом роде... Системы аутентификации описаны практически в каждой книге по пхп...
    Почти полного запрета на открытие файла submiter.php путем ввода урла можно добиться поставив в самом начале файла проверку на наличие пост переменной
    if(isset($_POST['aaaa]) && $_POST['aaaa]=="zz" ){ код страницы} else{echo "go home chiter!";}
    А в тело формы добавить скрытое поле с именем "аааа" и значением "zz" саму же форму отправлять методом POST...
    P.S. в теле мною приведенного кода, в строке document.forms[0].counter.value форум затирает левый слеш перед символом "n"