【问题标题】:PHP form success message using isset($_GET)使用 isset($_GET) 的 PHP 表单成功消息
【发布时间】:2013-11-02 21:01:34
【问题描述】:

我正在关注 youtube 上的 php 登录和注册教程,到目前为止它一直很有帮助。

第 1 部分 http://www.youtube.com/watch?v=axE55ZKMso4

第 2 部分 http://www.youtube.com/watch?v=5A50qmC7wFo(卡在这里)

我已经建立了我的表单并创建了一些错误报告,但是当我尝试显示成功的注册消息时问题就出现了。该页面似乎没有重定向到指定页面,并且我的错误帖子部分下的任何内容在注册后都会消失。

除消息外,其他所有方面都在工作,我一直按照他的要求进行操作,但是我实现了自己的设计。请帮忙。 PS。第一次在这里发帖。

这是我的所有错误帖子声明之后的代码。

      <?php
      if (isset($_GET['success']) && empty($_GET['success'])) {
          echo '<font color="#FF0033">Registration Message here</font> ';
      } else {

          if (empty($_POST) === false && empty($errors) === true)  {
              $register_data = array(
              'username'     => $_POST['username'],
              'password'     => $_POST['password'],
              'first_name'   => $_POST['first_name'],
              'last_name'    => $_POST['last_name'],
              'email'    => $_POST['email']
              );

             register_user($register_data);
             header('Location: register.php?success');
             exit();

            } else if (empty($errors) === false) {
            echo output_errors($errors);
            }
      }
      ?>

这下的一切,包括形式和其他方面的内容在登陆时都存在,但是一旦激活注册按钮,这里的所有内容都消失了。

我认为“header('Location: register.php?success');”可能有问题。

此外,当我通过本地主机强制../rootfolder/register.php/success 时,我得到一个没有样式的页面?就像它失去了所有的 CSS 和 Javascript 一样?

【问题讨论】:

  • 您确定要将 $_GET['success'] 设置为空吗?
  • empty($_POST) === false &amp;&amp; empty($errors) === true 可以缩写为!empty($_POST) &amp;&amp; empty($errors)
  • 教程有没有告诉你使用&lt;font&gt;,因为如果有,请立即停止观看。
  • 哈哈,没有。我知道这是不好的做法,但我是 php 新手,不知道如何设置从数据库中提取的信息的样式。有什么建议吗?
  • 尝试在header('Location: /path/to/register.php?success');中使用完整路径,并将此行放在if(headers_sent($file, $line)) echo('Headers already have been sent from '.$file.' (line '.$line.')');之前进行调试

标签: php forms message


【解决方案1】:

你认为exit() 会做什么?

header('Location: register.php?success');

应该将您的浏览器重定向到 register.php-script。如果它很可能在标头调用之前没有任何输出。标头应在任何其他输出之前发送。

【讨论】:

  • 感谢您的回复,我尝试删除 exit() 无济于事。奇怪的是,在他的教程中,他把它留在那里并且有效?
  • @MikeMaynard 您正在重新加载 register.php 因此您不删除退出 evrothing 将被重新加载并工作
【解决方案2】:

我目前正在关注这个教程,有人在视频的cmets中发布了把ob_start();在包含“core/init.php”之前;并且成功了。

<?php
ob_start();
include "core/init.php";

【讨论】:

  • 我知道教程你不需要开始会话注册
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多