【问题标题】:Changing a web page using JavaScript or PHP使用 JavaScript 或 PHP 更改网页
【发布时间】:2014-01-19 19:33:42
【问题描述】:

我是一名大学商科学生,正在尝试建立一个具有商业模式的网站。

我正在构建一个允许用户注册的网站。现在我正在使用 action: signup.php 将用户存储到数据库中。成功插入用户后,我将页面重定向回提交表单的 index.html。

我的问题是,如何通过我的 PHP 标记引用 JavaScript 将登录从 display:block 更改为 display:none 并从 display:none 注册确认到 display:block?

我目前正在使用$_GET 从signup.php 中获取成功/失败状态,并且我想使用IF 语句来执行正确的JavaScript 代码。

更新

我被建议改为将所有 div 设置为阻止并使用 PHP IF 语句来显示登录或注册 div。但是,实施更改后,index.html 仍然无法区分成功/失败状态。下面是我的代码:

注册.php:

if (mysqli_num_rows($data) == 0) 
{           
$qry = "INSERT INTO logins (username, password, email) VALUES ('$username', SHA('$password1'), '$email')";
$result=mysqli_query($dbc, $qry);
    if($result)
    { 
    header('Location: index.html?signup=success'); 
    }
}
else
    {
    header('Location: index.html?signup=fail');
    }

index.html:头部

<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>My Site</title>
    <link type="text/css" rel="stylesheet" href="home.css">
    <script type="text/javascript">...</script>

    <?php
    if(!empty($_GET['signup'])) 
    {
    $signup = $_GET['signup'];  
    }
    ?>

  </head>

index.html:正文

  <body>
    <div id="container">

      <?php
      if(!$signup)
      { 
      ?>
      <div id="login">...</div>          
      <?php
      }
      ?>

      <?PHP
      if($signup) 
      {  
      ?>
      <div id="signedup">...</div>

        <?PHP
        if($signup == 'success')
        {
        ?>
        <div id="confirmation">...</div>
        <?php
        }
        ?>       

        <?PHP
        if($signup == 'fail')
        {
        ?>
        <div id="failure">...</div>
        <?php
        }
        ?> 

      <?php
      }
      ?>
    </div>
  </body>

截至目前,在用户提交表单后,它们被插入到数据库中。问题是一旦它们被重定向到 index.html,php 就无法识别成功/失败状态,因此只显示登录表单。

【问题讨论】:

    标签: javascript php forms redirect confirmation


    【解决方案1】:

    PHP 代码需要放在您的&lt;head&gt;&lt;body&gt; 部分。你现在就在&lt;html&gt; 之前拥有它。

    是的,onload = function(); 应该是 window.onload = function;

    【讨论】:

    • 你不想执行函数,只需将函数本身赋值给onload(remove())
    【解决方案2】:

    这段代码并没有像你想象的那样做:

    onload=signedup();
    

    您需要正确附加到 onload 处理程序:

    window.onload = signedup;
    

    现在,这不是最好的处理方式(它会等待加载所有内容),所以如果您的页面中包含 jQuery,它会更有效:

    $(function(){ signedup(); });
    

    另外,将 PHP 移动到 HEAD 标记内,因为它会打印出一个脚本 - 并且脚本通常应该在 HEAD 标记中。


    现在,换个方向——为什么不只在需要时打印出 HTML 来使用 PHP:

    <?php if(!$signedup) { ?>
    
        <div id="login"> ... </div>
    
    <?php } ?>
    

    在这种情况下,这可能是要走的路!

    【讨论】:

    • 所以我只是调整了代码以包含'window'并删除了()但是当我刷新页面时它仍然显示:“window.onload=signedup;”;}}?>“在顶部。你能指定我需要把我的代码放在哪里吗?HTML 之前的 PHP 可以吗?我是否正确使用“echo”来引用 javascript?
    • 是的,PHP 放错地方了……让我更新一下答案。
    • 感谢改进的方法。我尽我所能尝试了它,但我没有达到我想要的结果。你能看看我编辑的问题吗?
    • 你真的需要提出一个新问题,因为它会引起新的关注。您的新代码有一个完全独立的问题,其他人可以帮助解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2020-01-31
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多