передать переменную php post из css - PullRequest
0 голосов
/ 21 мая 2019

Я создал страницу index.php с формой и кодом Python для выполнения с php, и я хотел бы показать gif счетчика, пока php выполняет код python. Я обнаружил, что: https://stackoverflow.com/a/34298686/11160699, но я не могу понять, как передать переменные POST в php. Вот мой код:

  • индексная форма:
<form action="welcome.php" method="post">
            <div class="row">
                <div class="col-25">
                    <label for="fname">Website url</label>
                </div>
                <div class="col-75">
                    <input type="text" name="site" placeholder="Enter the site to be validated" autocomplete="off"  pattern="(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+" required>
                </div>
            </div>
            <div class="row">
                <!--input type="submit" value="Validate"-->
                <div><input type="submit" name="user_button" value="I'm a normal user"></div>
                <div><input type="submit" name="programmer_button" value="I'm a programmer"></div>
            </div>
        </form>
  • php код:
 ob_start();
            $url = $_POST["site"];
            $path="pyt";
            $dir = chdir($path); 
            list($scriptPath) = get_included_files();
            echo exec("C:/Users/me/PycharmProjects/env/Scripts/python main.py  '$scriptPath' '$url'");
  • вызов php файла после loader.gif:
<div id="ok">

<h1> Please Wait </h1>
<p> Processing the url. It may take a few seconds. </p>
<img src='images/loader.gif' alt='loading' />

</div>
<style>
#runPHP
{ 

  background-image:url(phps.php);
  display:none;
}
</style>
</head>
<body>

<div id="runPHP"></div>

Есть идеи? Я знаю, что мог бы также использовать Javascript, но я не знаю, как это сделать.

1 Ответ

1 голос
/ 21 мая 2019

Во-первых: знайте, что вы выполняете код, который содержит пользовательский ввод! Таким образом, пользователь может попытаться выполнить код на вашем сервере, который он хочет, но вы не наносите серьезного ущерба своему серверу или вашим данным!

Чтобы решить вашу проблему с загрузчиком, вы должны попробовать использовать Javascript и одну страницу для ввода формы и загрузки счетчика. Если вы включили jQuery, перехватите отправку формы и отправьте данные с помощью AJAX. Во время выполнения запроса вы можете показать свой загрузочный счетчик.

$(function() {
  $("form").submit(function(e) {
    e.preventDefault(); // Prevent the default submission of the form
    var form = $(this);
    var url = form.attr('action'); // Extract the URL from the form

    // Show your loading information and hide the form
    $("#loading_div").show();
    $("form").hide();

    $.ajax({
           type: "POST",
           url: url,
           data: form.serialize(), // Send the form information as 
           success: function(data) {
               // Script has finished
               // Do something here...
           },
           error: function() {
               // Script execution not successful
           }
    });
  });
});

И ваш индекс:

<form action="welcome.php" method="post">
            <div class="row">
                <div class="col-25">
                    <label for="fname">Website url</label>
                </div>
                <div class="col-75">
                    <input type="text" name="site" placeholder="Enter the site to be validated" autocomplete="off"  pattern="(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+" required>
                </div>
            </div>
            <div class="row">
                <!--input type="submit" value="Validate"-->
                <div><input type="submit" name="user_button" value="I'm a normal user"></div>
                <div><input type="submit" name="programmer_button" value="I'm a programmer"></div>
            </div>
        </form>

<div style="display: none;" id="loading_div">
    <h1>Please wait</h1>
    <p> Processing the url. It may take a few seconds. </p>
    <img src="images/loader.gif" alt="loading" id="loader" />
</div>

Полагаю, ваш второй фрагмент с "php code" - welcome.php?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...