我正在尝试使用User类中的私有变量存储在文本字段中输入的值。函数名称在页面index.php中正常工作但是一旦我重定向到profile.php,User类就无法检索数据。这可能是因为我在profile.php中定义了一个新的Object。我这样做仅用于测试目的。任何建议如何解决这个问题。
<?php
session_start();
require_once 'Classes/User.php';
$user = new User();
if(isset($_POST['username'],$_POST['product'])){
$username = $_POST['username'];
$product = $_POST['product'];
if(!empty($product) && !empty($username)){
$user->get('username');
echo 'Success';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CSRF Protection</title>
</head>
<body>
<form action="" method="POST">
<div class="product">
<strong>Profile</strong>
<div class='field'>
Username: <input type='text' name='username'>
</div>
<input type='submit' value='Order'>
<input type='hidden' name='product' value='1'>
</div>
</form>
<?php
if(isset($_POST['username'])){
?>
<p>Hello <a href = 'profile.php'><?php echo $user->name();?></a>!</p>
<?php
}
?>
</body>
</html>
<?php
class User{
private $_data;
public function get($item){
if(isset($_POST[$item])){
$this->_data = $_POST[$item];
}
}
public function name(){
return $this->_data;
}
}
<?php
require_once 'Classes/User.php';
$user = new User();
echo 'Hello ' . $user->name();
?>
答案 0 :(得分:3)
您只能使用会话变量来传递。在索引中添加以下代码。
session_start();
$_SESSION['username'] = $user->name();
和你的profile.php
<?php
session_start();
echo $_SESSION['username'];
答案 1 :(得分:1)
我假设您在将表单发布到profile.php
时获得空值在Classes / User.php中
<?php
class User{
private $_data;
public function get($item){
if(isset($_POST[$item])){
$this->_data = $_POST[$item];
}
}
public function name(){
return $this->_data;
}
}
您只需将$ _POST数组中的值转换为get($ item)方法中的私有变量。
在profile.php中
<?php
require_once 'Classes/User.php';
$user = new User();
echo 'Hello ' . $user->name();
?>
您永远不会调用$ user-&gt; set('username'),因此$ user-&gt; _data为空。