如何从HTML或Javascript调用PHP文件

Jac*_*ery 15 html javascript php ajax jquery

我已经看了很久了,我找不到能回答这个看似基本问题的地方.我不关心页面是否重新加载或立即显示结果; 我只想在我的网站上有一个按钮来运行PHP文件.而已.我发现所有网站都会告诉您如何直接在HTML中运行PHP代码或告诉您使用ajax.如果事实证明是必要的话我会使用ajax,但是在使用PHP之前有一段时间存在ajax,所以我认为有一种更简单的方法.如果我可以在HTML中编写代码就好了,为什么我不能在那里引用它的文件或者在Javascript中对它进行简单的调用?

如果事实证明ajax是前进的唯一方法,那么我需要知道什么才能调用一个PHP文件来创建按钮按下的文本文件?我正在为自己制作一个简单的博客网站,我已经获得了该网站的代码和javascript,可以将我写的帖子textarea立即显示出来.我只是想将它链接到一个PHP文件,该文件将在服务器上创建永久博客帖子,这样当我重新加载页面时,帖子仍然存在.

感谢您抽出宝贵时间阅读和回答.

The*_*aot 54


如何打个按钮调用PHP?

我不关心页面是否重新加载或立即显示结果;

好!

注意:如果您不想刷新页面,请参阅下面的" Ok ...但我如何使用Ajax? ".

我只想在我的网站上有一个按钮来运行PHP文件.

这可以通过一个带有单个按钮的表单来完成:

<form action="">
  <input type="submit" value="my button"/>
</form>
Run Code Online (Sandbox Code Playgroud)

而已.

差不多.另请注意,有些情况下ajax确实是要走的路.

这取决于你想要什么.一般而言,当您想要避免重写页面时,您只需要ajax.你还说过你不关心那个.


为什么我不能直接从JavaScript调用PHP?

如果我可以在HTML中编写代码就好了,为什么我不能在那里引用它的文件或者在Javascript中对它进行简单的调用?

因为PHP代码不在HTML just fine.这是大多数服务器端脚本语言工作方式(包括PHP,JSP和ASP)的错觉.该代码仅存在于服务器上,并且在没有某种远程调用的情况下,客户端(浏览器)无法访问该代码.

如果您要求浏览器显示页面的源代码,您可以看到此证据.那里你不会看到PHP代码,因为PHP代码没有发送到客户端,因此无法从客户端执行.这就是为什么你需要做一个远程调用才能让客户端触发PHP代码的执行.

如果您不使用表单(如上所示),您可以使用一个名为Ajax的小东西从JavaScript进行远程调用.您可能还想考虑是否可以直接在JavaScript中完成PHP中的操作.


如何调用另一个 PHP文件?

使用表单进行通话.您可以让它将用户定向到特定文件:

<form action="myphpfile.php">
  <input type="submit" value="click on me!">
</form>
Run Code Online (Sandbox Code Playgroud)

用户将最终进入页面myphpfile.php.要使其适用于当前页面,请将action设置为空字符串(这是我在早期给出的示例中所做的).

我只是想将它链接到一个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>
Run Code Online (Sandbox Code Playgroud)

我需要知道什么来调用一个PHP文件,它会在按下按钮时创建一个文本文件?

请参阅:如何使用PHP写入文件.


你如何从服务器的POST接收数据?

我很高兴你问...因为你是一个新手,我会给你一个你可以遵循的模板:

<?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>
Run Code Online (Sandbox Code Playgroud)

注意:您可以删除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>
Run Code Online (Sandbox Code Playgroud)

请查看php.net,了解您无法识别的任何函数调用.另外 - 如果你还没有 - 获得一个关于HTML5的好教程.

另外,因为UTF-8使用UTF-8!


备注:

我正在为自己制作一个简单的博客网站,我已经获得了该网站的代码和javascript,可以将我在textarea中写的帖子立即显示出来.

如果你使用CMS(Codepress,Joomla,Drupal ......等)?这使你对如何做事情产生了一些限制.

此外,如果您正在使用框架,您应该查看他们的文档或在他们的论坛/邮件列表/讨论页面/联系人询问或尝试询问作者.


好的......但是我怎么使用Ajax呢?

嗯......一些JavaScript库让Ajax变得简单.既然你是一个初学者,我会推荐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>
Run Code Online (Sandbox Code Playgroud)

上面的代码将向页面发送POST请求test.php.

注意:如果需要,您可以混合sessions使用ajax.


我如何能...

  1. 如何连接数据库?
  2. 如何防止SQL注入?
  3. 为什么我不应该使用Mysql_*函数?

...对于这些或任何其他,请提出另一个问题.对于这个来说太过分了.

  • 您的答案应该移到StackTutorial:D (6认同)

Que*_*tin 2

我只想在我的网站上有一个按钮来运行 PHP 文件

<form action="my.php" method="post">
    <input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

但一般来说,除非您将新数据发送到服务器进行存储,否则您只需使用链接即可。

<a href="my.php">run php</a>
Run Code Online (Sandbox Code Playgroud)

(尽管您应该使用链接文本来描述从用户的角度而不是服务器的角度发生的情况)


我正在为自己制作一个简单的博客网站,并且我已经获得了该网站的代码和 javascript,可以将我在文本区域中编写的帖子并立即显示出来。我只想将其链接到一个 PHP 文件,该文件将在服务器上创建永久博客文章,这样当我重新加载页面时,该文章仍然存在。

这是骗子。

首先,您确实需要使用表单和 POST(因为您要发送要存储的数据)。

然后你需要将数据存储在某个地方。这通常是使用数据库完成的。阅读 PHP 的 PDO 库。这是与数据库交互的标准方式。

然后你需要再次把数据拉回来。这里最简单的方法是使用查询字符串将数据库行的主键与您希望显示的条目一起传递。

<a href="showBlogEntry.php?entry_id=123">...</a>
Run Code Online (Sandbox Code Playgroud)

确保您还阅读了 SQL 注入和 XSS。