it-swarm.com.ru

Как позвонить PHP файл из HTML или Javascript

Я долго оглядывался по сторонам и не могу найти нигде такого, который отвечал бы на этот, казалось бы, основной вопрос Мне все равно, если страница перезагрузится или отобразит результаты сразу; Я просто хочу, чтобы на моем веб-сайте была кнопка запуска PHP. Вот и все. И я обнаружил, что все веб-сайты либо сообщают вам, как напрямую запускать код PHP в вашем HTML-коде, либо советуют использовать ajax. Я буду использовать ajax, если это окажется необходимым, но было время, прежде чем существовал ajax, который использовался PHP, поэтому я думаю, что есть более простой способ. Если я могу написать код внутри HTML просто отлично, почему я не могу просто сослаться на файл для него или сделать простой вызов для него в Javascript?

Если выясняется, что ajax - единственный путь вперед, что мне нужно знать об этом, чтобы вызвать файл PHP, который создаст текстовый файл при нажатии кнопки? Я делаю простой блог-сайт для себя, и у меня есть код для сайта и javascript, который может взять сообщение, которое я пишу в textarea, и отобразить его немедленно. Я просто хочу связать его с файлом PHP, который создаст постоянную запись в блоге на сервере, так что когда я перезагружаю страницу, запись все еще там. 

Спасибо, что нашли время, чтобы прочитать и ответить.

12
Jackery

Как сделать кнопку вызова PHP?

Мне все равно, если страница перезагрузится или отобразит результаты сразу;

Хорошо!

Примечание: Если вы не хотите обновлять страницу, см. «Хорошо ... но как я могу использовать Ajax?» Ниже.

Я просто хочу, чтобы на моем веб-сайте была кнопка запуска PHP.

Это можно сделать с помощью одной кнопки:

<form action="">
  <input type="submit" value="my button"/>
</form>

Вот и все.

Довольно много. Также обратите внимание, что есть случаи, когда ajax - действительно путь.

Это зависит от того, что вы хотите. В общих чертах, вам нужен только ajax, если вы хотите избежать повторной загрузки страницы. Тем не менее, вы сказали, что вас это не волнует.


Почему я не могу вызвать PHP напрямую из JavaScript?

Если я могу написать код внутри HTML просто отлично, почему я не могу просто сослаться на файл для него или сделать простой вызов для него в Javascript?

Поскольку код PHP отсутствует в HTML just fine. Это иллюзия, созданная тем, как работает большинство языков сценариев на стороне сервера (включая PHP, JSP и ASP). Этот код существует только на сервере, и он недоступен клиенту (браузеру) без какого-либо удаленного вызова.

Вы можете увидеть доказательства этого, если попросите браузер показать исходный код страницы. Там вы не увидите код PHP, потому что код PHP не отправляется клиенту, поэтому его нельзя выполнить с клиента. Вот почему вам необходимо выполнить удаленный вызов, чтобы клиент мог инициировать выполнение кода PHP.

Если вы не используете форму (как показано выше), вы можете сделать этот удаленный вызов из JavaScript с помощью небольшой вещи под названием Ajax. Вы также можете подумать, можно ли сделать то, что вы хотите сделать в PHP, непосредственно в JavaScript.


Как вызвать файл другой PHP?

Используйте форму, чтобы сделать звонок. Вы можете иметь его, чтобы направить пользователя к конкретному файлу:

<form action="myphpfile.php">
  <input type="submit" value="click on me!">
</form>

Пользователь окажется на странице myphpfile.php. Чтобы это работало для текущей страницы, установите для действия пустую строку (что я и сделал в примере, который я дал вам ранее).

Я просто хочу связать его с файлом PHP, который создаст постоянную запись в блоге на сервере, так что когда я перезагружаю страницу, запись все еще там.

Если вы хотите выполнить операцию на сервере, вы должны сделать так, чтобы в вашей форме были необходимые поля (даже если type="hidden" и использовать POST):

<form action="" method="POST">
  <input type="text" value="default value, you can edit it" name="myfield">
  <input type="submit" value = "post">
</form>

Что мне нужно знать об этом, чтобы вызвать файл PHP, который создаст текстовый файл при нажатии кнопки?

смотрите: Как записать в файл в PHP .


Как вы получаете данные от POST на сервере?

Я рад, что вы спрашиваете ... Так как вы newb начинающий, я дам вам небольшой шаблон, которому вы можете следовать:

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST')
    {
        //Ok we got a POST, probably from a FORM, read from $_POST.
        var_dump($_PSOT); //Use this to see what info we got!
    }
    else
    {
       //You could assume you got a GET
       var_dump($_GET); //Use this to see what info we got!
    }
 ?>
 <!DOCTYPE html>
 <html lang="en">
   <head>
     <meta char-set="utf-8">
     <title>Page title</title>
   </head>
   <body>
     <form action="" method="POST">
       <input type="text" value="default value, you can edit it" name="myfield">
       <input type="submit" value = "post">
     </form>
   </body>
 </html>

Примечание: вы можете удалить var_dump, это только для целей отладки.


Как я...

Я знаю, на следующем этапе вы будете спрашивать, как:

  1. как передать переменные из файла PHP другому?
  2. как запомнить пользователя/сделать логин?
  3. Как избежать этого раздражающего сообщения, которое появляется при перезагрузке страницы?

На это есть один ответ: сессии.

Я дам более обширный шаблон для Post-Redirect-Get

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST')
    {
        var_dump($_PSOT);
        //Do stuff...
        //Write results to session
        session_start();
        $_SESSION['stuff'] = $something;
        //You can store stuff such as the user ID, so you can remeember him.
        //redirect:
        header('Location: ', true, 303);
        //The redirection will cause the browser to request with GET
        //The results of the operation are in the session variable
        //It has empty location because we are redirecting to the same page
        //Otherwise use `header('Location: anotherpage.php', true, 303);`
        exit();
    }
    else
    {
        //You could assume you got a GET
        var_dump($_GET); //Use this to see what info we got!
        //Get stuff from session
        session_start();
        if (array_key_exists('stuff', $_SESSION))
        {
           $something = $_SESSION['stuff'];
           //we got stuff
           //later use present the results of the operation to the user.
        }
        //clear stuff from session:
        unset($_SESSION['stuff']);
        //set headers
        header('Content-Type: text/html; charset=utf-8');
        //This header is telling the browser what are we sending.
        //And it says we are sending HTML in UTF-8 encoding
    }
 ?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta char-set="utf-8">
    <title>Page title</title>
  </head>
  <body>
    <?php if (isset($something)){ echo '<span>'.$something.'</span>'}?>;
    <form action="" method="POST">
      <input type="text" value="default value, you can edit it" name="myfield">
      <input type="submit" value = "post">
    </form>
  </body>
</html>

Пожалуйста, посмотрите на php.net любой вызов функции, который вы не можете распознать. Также - если у вас его еще нет - получите хороший учебник по HTML5.

Также используйте UTF-8 потому что UTF-8 !


Заметки:

Я делаю простой блог-сайт для себя, и у меня есть код для сайта и javascript, который может взять сообщение, которое я пишу в текстовой области, и немедленно отобразить его.

Если вы используете CMS (Codepress, Joomla, Drupal ... и т.д.)? Это делает некоторые ограничения на то, как вы должны делать вещи.

Кроме того, если вы используете фреймворк, вы должны посмотреть на их документацию или спросить на их форуме/в списке рассылки/на странице обсуждения/в контакте или попытаться спросить авторов.


Хорошо ... но как я могу использовать Ajax в любом случае?

Ну ... Ajax упрощается благодаря некоторым библиотекам JavaScript. Поскольку вы начинающий, я рекомендую jQuery .

Итак, давайте отправим что-нибудь на сервер через Ajax с помощью jQuery, я буду использовать $ .post вместо $ .ajax для этого примера.

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST')
    {
        var_dump($_PSOT);
        header('Location: ', true, 303);
        exit();
    }
    else
    {
        var_dump($_GET);
        header('Content-Type: text/html; charset=utf-8');
    }
 ?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta char-set="utf-8">
    <title>Page title</title>
    <script>
        function ajaxmagic()
        {
            $.post(                             //call the server
                "test.php",                     //At this url
                {
                    field: "value",
                    name: "John"
                }                               //And send this data to it
            ).done(                             //And when it's done
                function(data)
                {
                    $('#fromAjax').html(data);  //Update here with the response
                }
            );
        }
    </script>
  </head>
  <body>
    <input type="button" value = "use ajax", onclick="ajaxmagic()">
    <span id="fromAjax"></span>
  </body>
</html>

Приведенный выше код отправит запрос POST на страницу test.php.

Примечание: Вы можете смешивать sessions с ajax и прочее, если хотите.


Как я...

  1. Как мне подключиться к базе данных?
  2. Как предотвратить внедрение SQL?
  3. Почему я не должен использовать функции Mysql_ *?

... для этих или любых других, пожалуйста, задайте другие вопросы. Это слишком много для этого.

51
Theraot

Я просто хочу, чтобы на моем веб-сайте была кнопка запуска PHP файла

<form action="my.php" method="post">
    <input type="submit">
</form>

В целом, однако, если вы не отправляете новые данные на сервер для хранения, вы просто используете ссылку.

<a href="my.php">run php</a>

(Хотя вы должны использовать текст ссылки, который описывает, что происходит с точки зрения пользователя, а не серверов)


Я делаю простой блог-сайт для себя, и у меня есть код для сайта и javascript, который может взять сообщение, которое я пишу в текстовой области, и немедленно отобразить его. Я просто хочу связать его с файлом PHP, который создаст постоянную запись в блоге на сервере, так что когда я перезагружаю страницу, запись все еще там.

Это обманщик. 

Во-первых, вам нужно использовать форму и POST (так как вы отправляете данные для хранения).

Тогда вам нужно где-то хранить данные. Обычно это делается с использованием базы данных. Читайте о библиотеке PDO для PHP. Это стандартный способ взаимодействия с базами данных.

Затем вам нужно снова извлечь данные. Самый простой подход - использовать строку запроса для передачи первичного ключа для строки базы данных с записью, которую вы хотите отобразить.

<a href="showBlogEntry.php?entry_id=123">...</a>

Убедитесь, что вы также читаете о внедрении SQL и XSS.

0
Quentin

Как вы уже заявили в своем вопросе, у вас есть несколько вариантов. Очень простой подход - использовать тег, ссылающийся на ваш файл PHP в атрибуте метода. Однако как бы эзотерически это ни звучало AJAX, это более полный подход. Учитывая, что вызов AJAX (в сочетании с jQuery) может быть таким простым:

$.post("yourfile.php", {data : "This can be as long as you want"});

И вы получаете более гибкое решение, например, запуск функции после завершения запроса к серверу. Надеюсь это поможет.

0
ferret96

Вам просто нужно опубликовать данные формы в функции вставки php файла, см. Ниже :)

class DbConnect
{
// Database login vars
private $dbHostname = '';
private $dbDatabase = '';
private $dbUsername = '';
private $dbPassword = '';
public $db = null;

public function connect()
{

    try
    {
        $this->db = new PDO("mysql:Host=".$this->dbHostname.";dbname=".$this->dbDatabase, $this->dbUsername, $this->dbPassword);
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e)
    {
        echo "It seems there was an error.  Please refresh your browser and try again. ".$e->getMessage();
    }
}

public function store($email)
{
    $stm = $this->db->prepare('INSERT INTO subscribers (email) VALUES ?');
    $stm->bindValue(1, $email);

    return $stm->execute();
}
}
0
Luke