我试图在会话中保存表单中的输入。我在index.php中有这段代码:
<?php
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$_SESSION['str1'] = $_POST["streamer1"];
$_SESSION['str2'] = $_POST["streamer2"];
}
?>
<form method="post" action="view.php" id="steamerEingabe">
<label class="white-text font-weight-light">Streamer #1</label>
<center><input type="text" name="streamer1" class="form-control"></input></center><br>
<label class="white-text font-weight-light">Streamer #2</label>
<center><input type="text" name="streamer2" class="form-control"></input></center><br>
<button type="submit" class="btn btn-outline-cyan">Watch Now</button>
</form>
现在我想在我的view.php中使用这个会话:
<?php
session_start();
echo $_SESSION['str1'];
echo $_SESSION['str2'];
session_destroy();
?>
但这不起作用。我收到这些错误
Notice: Undefined index: str1 in /var/www/vhosts/default/htdocs/multistream/view.php on line 4
Notice: Undefined index: str2 in /var/www/vhosts/default/htdocs/multistream/view.php on line 5
我该如何解决这个问题?
答案 0 :(得分:0)
看起来问题是:action="view.php"
您的表单直接提交给view.php
,但设置会话值的代码与表单位于同一文件中。
相反,您可以将表单提交到同一页面(index.php),并在提交表单后设置会话值后重定向到view.php。
<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$_SESSION['str1'] = $_POST["streamer1"];
$_SESSION['str2'] = $_POST["streamer2"];
header('Location: view.php'); // redirect after setting session values
}
?>
<!-- submit to self -->
<form method="post" action="" id="steamerEingabe">
<label class="white-text font-weight-light">Streamer #1</label>
<center><input type="text" name="streamer1" class="form-control"></input></center><br>
<label class="white-text font-weight-light">Streamer #2</label>
<center><input type="text" name="streamer2" class="form-control"></input></center><br>
<button type="submit" class="btn btn-outline-cyan">Watch Now</button>
</form>
如果进行了这些更改,view.php应该按预期工作。但是在使用它们之前,您仍应检查这些会话值是否已设置。如果你直接去view.php而不在index.php中提交表格,他们可能不会在那里。