如何在PHP文件中使用PHP里面的PHP

时间:2017-03-03 02:48:34

标签: javascript php

我有一个php文件,其中我在echo里面添加了JS。 我现在想在JS范围内使用php函数,我该怎么做:

<?php
  echo '<script>
    <?php 
      function message() {
        echo "You will be redirected";
      } 
    ?>
    setTimeout(<?php message();>?,3000);</script>';
?>

2 个答案:

答案 0 :(得分:0)

PHP将首先在服务器上执行,因此您必须在.php文件中对其进行编码,以确保服务器通过PHP运行它,然后将PHP嵌入到JavaScript中,如下所示:

<script>
function message(){
    alert("<?= $phpMessage ?>");
    location.href = "http://www.example.com" /* The URL you would like the user to go to next */;
}
setTimeout(message,3000);
</script>

假设您要显示来自PHP的消息,您可以将其嵌入警告语句中&lt;?= $ phpMessage?&gt;。这对您的用户来说很尴尬。

更优雅的解决方案是使用会话存储将消息传递到下一页。

在接收数据并需要发送消息的页面上,在发送任何输出之前,第一个PHP命令应为 session_start()。消息可以使用 $ _ SESSION ['message'] 保存在会话变量中,并且可以用于下一个脚本,如下所示:

one.php (第一页)

<?php session_start(); $_SESSION['message'] = 'My Message'; 

two.php (第二页)

<?php session_start(); echo $_SESSION['message']; unset($_SESSION['message']); ?>

请注意,第二个脚本必须使用取消设置来清除消息。

答案 1 :(得分:0)

无论您做什么,JavaScript都无法在页面上下文中执行您的PHP。根据你的例子,我不认为你想用PHP做到这一点。

如果您只想在重定向用户之前输出消息,那么仅使用JavaScript是正确的工具:

<script>
  function message() {
    document.write("You will be redirected");
  } 
  setTimeout(message,3000);
</script>

我试图想一个像你问的那样混合PHP和JavaScript是有意义的场景,但我不能。

但是,如果你真的坚持......

<?php
  function message() {
    return "You will be redirected";
  }

  echo '
    <script>
      setTimeout(() => document.write("' . message() . '"), 3000);
    </script>
  ';
 ?>

https://repl.it/GF2E/0

进行测试

请注意,JavaScript箭头函数语法为supported by all current browsers