我目前正在使用lynda.com上的一个PHP / MySQL入门系列。到目前为止,我很喜欢它,并且取得了成功,但这让我很困惑。
我已经为用户输入创建了一个名为new_subject.php的表单。以下称为create_subject.php,它意味着处理来自new_subject.php的表单数据。请记住,我还没有添加任何代码来执行此操作,我只是测试重定向功能:
<?php require_once("../includes/db_connection.php"); ?>
<?php require_once("../includes/functions.php"); ?>
<?php
if (isset($_POST['submit'])) {
} else {
// This is probably a GET request
redirect_to("new_subject.php");
}
?>
<?php
if (isset($connection)) {mysqli_close($connection);}
?>
redirect_to函数的重点是将用户重定向到new_subject.php中的表单,如果他们要在浏览器中手动输入create_subject.php。以下是functions.php中的redirect_to函数:
function redirect_to($new_location) {
header("Location: " . $new_location);
exit;
}
尝试手动访问create_subject.php时出现以下错误:
致命错误:调用未定义的函数redirect_to()
教程视频说我可以打开输出缓冲,我试图在我的php.ini文件中做,但错误保持不变。该视频说我可以做到这一点,或者解决空白问题。&#34;我不知道这意味着什么。
我会很感激这个&#34;白色空间问题&#34;是的,如果还有什么我可以做的。据我所知,我应该可以毫无问题地调用这个函数。
由于
答案 0 :(得分:0)
对于空白问题,在你的代码中调用位置标题之前必须没有输出..在php标签之外必须没有空格..
只需重写,以便所有这些都包含在一个php标记中,并确保没有空间,即使只有一个空格。
<?php
require_once("../includes/db_connection.php");
require_once("../includes/functions.php");
if (isset($_POST['submit'])) {
} else {
// This is probably a GET request
redirect_to("new_subject.php");
}
if (isset($connection)) {mysqli_close($connection);}
?>
请在此处阅读.. How to fix "Headers already sent" error in PHP
然而,你的主要问题是找不到功能..
检查你的functions.php并确保正确定义redirect_to。如果是这种情况,那么最有可能的问题是你的“require_once”必须指向一个不存在的文件。你能告诉我们你的文件夹结构吗?
你的functions.php必须位于一个名为includes的文件夹中,该文件夹位于你的create_subject.php所在的文件夹之外。
如果'includes'文件夹位于create_subject.php所在的文件夹内,则将require_once更改为
require_once("includes/db_connection.php");
require_once("includes/functions.php");
如果两者都位于同一文件夹中,则将require_once更改为
require_once("db_connection.php");
require_once("functions.php");