如何在PHP中使用require()传递变量
我一直在尝试使用如何在PHP中使用require()传递变量,php,Php,我一直在尝试使用require()在两个PHP文件a.PHP和b.PHP之间传递变量。我了解到PHP变量只有一个作用域,这意味着如果a.PHP包含b.PHP,它可以读取其变量。但是,我希望b.php能够使用当前设置从a.php读取变量。例如,如果在b.php中设置了msg,我可以打印出a.php。有没有一个简单的方法可以做到这一点 a.php <?php $msg = "Welcome NEW USER ! We can't wait for you to check out our b
require()
在两个PHP文件a.PHP
和b.PHP
之间传递变量。我了解到PHP变量只有一个作用域,这意味着如果a.PHP
包含b.PHP
,它可以读取其变量。但是,我希望b.php
能够使用当前设置从a.php
读取变量。例如,如果在b.php
中设置了msg
,我可以打印出a.php
。有没有一个简单的方法可以做到这一点
a.php
<?php
$msg = "Welcome NEW USER ! We can't wait for you to check out our books!";
require("connect.php");
require("b.php");
$table = "SELECT * FROM `login`";
if ($query_run=mysqli_query($cnn,$table)){
$username = $_POST['username'];
$pw = $_POST['password'];
$sql = "INSERT INTO login (username,password) VALUES ('{$username}','{$pw}')";
if($cnn->query($sql)===TRUE){echo "Query ran successfully";}
else{echo "Error: ".$sql."<br>".$cnn->error;}
}
else{die("table connection failed");}
$cnn.close();
?>
<?php
echo "<h1>".$msg."</h1>
<form action='' method='post'>
Username: <input type='text' name='username'><br>
Password: <input type='text' name='password'><br>
<input type='submit' name='submit'>
</form>
"
?>
$_SESSION['myName'] = "John";
echo $_SESSION['myName']
<?php
$from_a = 'hey';
require "b.php";
print $from_b;
使用$\u会话将允许您在不同文件之间传递
数据
在a.php中
<?php
$msg = "Welcome NEW USER ! We can't wait for you to check out our books!";
require("connect.php");
require("b.php");
$table = "SELECT * FROM `login`";
if ($query_run=mysqli_query($cnn,$table)){
$username = $_POST['username'];
$pw = $_POST['password'];
$sql = "INSERT INTO login (username,password) VALUES ('{$username}','{$pw}')";
if($cnn->query($sql)===TRUE){echo "Query ran successfully";}
else{echo "Error: ".$sql."<br>".$cnn->error;}
}
else{die("table connection failed");}
$cnn.close();
?>
<?php
echo "<h1>".$msg."</h1>
<form action='' method='post'>
Username: <input type='text' name='username'><br>
Password: <input type='text' name='password'><br>
<input type='submit' name='submit'>
</form>
"
?>
$_SESSION['myName'] = "John";
echo $_SESSION['myName']
<?php
$from_a = 'hey';
require "b.php";
print $from_b;
在b.php中
<?php
$msg = "Welcome NEW USER ! We can't wait for you to check out our books!";
require("connect.php");
require("b.php");
$table = "SELECT * FROM `login`";
if ($query_run=mysqli_query($cnn,$table)){
$username = $_POST['username'];
$pw = $_POST['password'];
$sql = "INSERT INTO login (username,password) VALUES ('{$username}','{$pw}')";
if($cnn->query($sql)===TRUE){echo "Query ran successfully";}
else{echo "Error: ".$sql."<br>".$cnn->error;}
}
else{die("table connection failed");}
$cnn.close();
?>
<?php
echo "<h1>".$msg."</h1>
<form action='' method='post'>
Username: <input type='text' name='username'><br>
Password: <input type='text' name='password'><br>
<input type='submit' name='submit'>
</form>
"
?>
$_SESSION['myName'] = "John";
echo $_SESSION['myName']
<?php
$from_a = 'hey';
require "b.php";
print $from_b;
我不确定你的问题是什么,但你的例子应该有用。这是最有效的:
a.php
<?php
$msg = "Welcome NEW USER ! We can't wait for you to check out our books!";
require("connect.php");
require("b.php");
$table = "SELECT * FROM `login`";
if ($query_run=mysqli_query($cnn,$table)){
$username = $_POST['username'];
$pw = $_POST['password'];
$sql = "INSERT INTO login (username,password) VALUES ('{$username}','{$pw}')";
if($cnn->query($sql)===TRUE){echo "Query ran successfully";}
else{echo "Error: ".$sql."<br>".$cnn->error;}
}
else{die("table connection failed");}
$cnn.close();
?>
<?php
echo "<h1>".$msg."</h1>
<form action='' method='post'>
Username: <input type='text' name='username'><br>
Password: <input type='text' name='password'><br>
<input type='submit' name='submit'>
</form>
"
?>
$_SESSION['myName'] = "John";
echo $_SESSION['myName']
<?php
$from_a = 'hey';
require "b.php";
print $from_b;
以上内容是完全有效的PHP,将按预期工作,不会出现错误。另一个脚本所需的脚本可以完全访问其变量,反之亦然。如果需要无限循环,请在每个文件中尝试一次
require\u。
但最好的解决方案是创建第三个文件,即c.php,并在其中同时包含b.php和a.php,无需使用session
若PHP文件包含在其他PHP文件中,那个么变量也可以在包含的PHP文件中访问
范例
<?php
$a = 1;
include 'filename.php';
?>
然后可以在filename.php中访问$a。
在包含的文件和测试中使用echo
如果你觉得有什么问题,请告诉我
这意味着如果a.php包含b.php,它可以读取其变量
我认为这个概念略有不同。当您调用语言构造require
时,它将读取并包含指定的文件,就像它是在调用文件本身中写入的一样
因此:
<?php
// File a.php
$somevar = 6;
require "b.php";
?>
实际上与
<?php
// File a.php
$somevar = 6;
// File b.php
echo $somevar;
?>
如果a.php包含/需要b.php,那么b中的所有变量在a中都可用。对于a.php,使用b.php上的require_once;对于b.php,使用a.php上的require_once。php表示了解的语句。即使是这样也不安全!永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u hash()
。在散列之前,不需要对它们执行任何操作或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。您确实应该只使用会话在会话之间存储变量,而不是在文件之间存储变量。你最好使用globals,而不是sessions(因为它们有额外的副作用),但两者都不是一个好主意。