好的,我的代码很简单:
<?php include 'formvalidation.php';
echo $name; ?>
我想只显示$name
,但显示整个'formvalidation.php'
。
我该如何解决?
答案 0 :(得分:0)
您可以使用会话功能来调用变量而不是包含页面,因为它确实会加载整个页面。请更具体地说明您的目标,也许我们可以通过了解更多信息来提供更多帮助。
答案 1 :(得分:0)
当您使用include 'someFile.php';
时,就像您正在获取该文件的所有内容并将其粘贴在代码中一样。例如,如果我有:
someFile.php
echo '<h1>Hello World</h1>';
echo '<p>I like pie</p>';
然后:
include 'someFile.php';
echo $name;
与:
相同echo '<h1>Hello World</h1>';
echo '<p>I like pie</p>';
echo $name;
答案 2 :(得分:0)
它将执行formvalidation.php中的任何内容。所有include函数都基本上用所包含文件的内容替换该行。
因此,如果您不想显示该文件中的内容,请将整个文件包含在函数或多个函数中。这是您的库文件(包括)的方式。该文件中的任何内容都不应位于函数定义之外。
示例(这是一个糟糕的编程习惯,但是例如) -
formvalidation.php是 - &gt;
<?php
echo "hola";
if ($i = 5) {
echo 15;
}
?>
<form><input type="text" value= "10"/>
<?php
echo "macho, macho man.";
?>
包含它时,所有内容都会显示出来。
formvalidation.php now - &gt;
<?php
function validate_form() {
echo "hola";
if ($i = 5) {
echo 15;
}
?>
<form><input type="text" value= "10"/>
<?php
echo "macho, macho man.";
}
?>
现在我改变文件的方式 - 在调用validate_form()之前不会打印任何内容;
这有意义吗?
答案 3 :(得分:0)
formvalidation.php的整个HTML内容将出现在屏幕上(所以<?php ?>
之外的所有内容就像所有包含文件的输出(echo etc ...)一样会出现在屏幕上。
您可以通过删除输出并仅将函数和变量声明放入包含的文件formvalidation.php中来避免这种情况。
formvalidation.php的内容可以是例如。是:
<?php
$name = 'test';
?>
答案 4 :(得分:0)
正如其他人所说,那是什么包括在内。我假设您在formvalidation.php文件中定义$name
,这就是您要包含它的原因。
这里正确的解决方案是将formvalidation.php中的代码分离到执行数据处理的函数/类/文件中,另一个创建输出。在您不想要输出
的情况下,您只包括/呼叫第一个但是,可以使用输出缓冲来捕获输出然后丢弃它:
<?php
ob_start(); //Start capturing output
include 'formvalidation.php';
ob_end_clean(); // Stop capturing output and discard whatever was captured
echo $name;
?>
那说我真的不推荐这个。修复此问题的推荐方法是从输出生成代码中分离后端代码,并仅在任何给定情况下调用您实际需要的内容。
修改强>
如何正确分离问题的一个例子如下:
让我们假设您当前的formvalidation.php类似于:
<?php
$name = $_REQUEST['name'];
if( '' == $name ){ ?>
<p class="error">You must supply a name</p>
<form action="foo.php">
<input name="name" />
<button type="submit">Submit</button>
</form><?php
} else {
echo '<p>Form valid!</p>';
}
在新文件validator.php中,你可以这样做:
<?php
class MyValidator{
public $name;
function read_data(){
$this->name = $_REQUEST['name'];
}
function validate(){
if( '' == $name ){ ?>
<p class="error">You must supply a name</p>
<form action="foo.php">
<input name="name" />
<button type="submit">Submit</button>
</form><?php
} else {
echo '<p>Form valid!</p>';
}
}
}
然后你将formvalidtion.php改为
<?php
require_once 'validator.php';
$val = new MyValidator();
$val->read_data();
$val->validate();
当您上面的文件变为
时<?php
require_once 'validator.php';
$val = new MyValidator();
$val->read_data();
echo $val->name;
答案 5 :(得分:0)
&#34;我希望在按下按钮后,我写的功能将执行以检查输入,然后如果输入正确,它将重定向到另一个页面,它可以显示输入。&#34;
如果您希望在提交表单后重定向并在之后显示名称,则需要使用sessions和header。
以下是formvalidation.php
内添加的示例 (请参阅代码中的注释):
<?php
session_start();
// all other codes you already have
$name = "John"; // this is an example
// replace above with your POST variable
// such as $name = $_POST['name'];
$_SESSION['showname'] = $name;
header("Location: your_other_file.php");
exit; // keep this
N.B。:确保<?php session_start();
之上没有其他内容,例如您的表单,因为这会发出警告,说明Headers already sent...
<强> your_other_file.php 强>
<?php
session_start();
if(isset($_SESSION['showname'])){
$name = $_SESSION['showname'];
echo $name;
}
$name = "John"; // this is an example
在代码中用POST变量替换上面的代码。
例如以$name = $_POST['name'];
为例,因为您没有提供有关您的superglobal变量名称的附加代码。