1

这里有一个问题:输入一些关于学生的数据后,我需要将它们打印在页面的顶部(表格一)。我已经设法为单个学生打印数据,但我无法将数据存储在 $studenti 数组中,以便为所有学生打印数据。这是我使用的代码(我忘了提,我需要为此使用会话):

    <?php
session_start();

$_SESSION['aindex'] = $_POST['index'];
$_SESSION['aime']= $_POST['ime'];
$_SESSION['aprosek'] = $_POST['prosek'];

//if ($index != "" && $ime != "" && $prosek !="")
//{
// = $index;
 //= $ime;
 //=$prosek;

//}

//print ($_SESSION['aindex']);
function inicijalizacija()
{
    $studenti = array ();
    $ind = $_SESSION['aindex'];
    $im = $_SESSION['aime'];
    $pr = $_SESSION['aprosek'];

    $studenti[$ind]["ime"] = $im;
    $studenti[$ind]["prosek"] = $pr;

return $studenti;   
}

function dodaj($studenti)
{
$studenti[$_SESSION['aindex']]["ime"] = $_SESSION['aime'];
$studenti[$_SESSION['aindex']]["prosek"] = $_SESSION['aprosek'];

return $studenti;
}

function prikazi($studenti) //ovde u argumentu treba $studenti
{

print ("<h2> Lista Studenata: </h2>");
foreach ($studenti as $ind => $student)
{
if (empty($ind))
    continue;
$n = $student["ime"];
$p = $student["prosek"];
print ("Index: " . $ind . " " . "Ime: " . $n . " " .  "Prosek: " . $p );


}
print("<hr size ='1'>");

//Forma dodavanja

print (" <form action = 'index.php' method = 'post' >");
print ( " Indeks:&nbsp   <input type = 'text' name = 'index' />");
print(" </br>");
print ( " Ime:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp   <input type = 'text' name = 'ime' >");
print(" </br>");
print ( " Prosek : <input type = 'text' name = 'prosek' />");
print(" </br>");
print (" <input type = 'submit' value = 'Dodaj' name = 'Dodaj' />");
}




$studenti = inicijalizacija();
?>


<html>
    <head> <title> pokusaj </title> </head>
    <body>
    <?php

    prikazi($studenti);
    dodaj($studenti);
    ?>

    </body>



</html>
4

1 回答 1

1

看来您误解了 PHP 的工作方式。为了提高效率和安全性,脚本运行后所有变量都将被销毁,并且该用户使用的变量在被其他用户调用时对脚本不可见。

$_SESSION 是一个例外;$_SESSION 中的数据将一直保留到会话到期,但它仍然只对一个唯一用户可见(由 cookie 标识)。

如果要保存脚本的数据以供再次调用(使用另一个会话)时使用,则必须将数据写入文件或使用数据库。

PS,你的脚本看起来会引入XSSCSRF漏洞;确保你不会犯很多人之前犯过的错误。

于 2012-05-28T09:41:06.617 回答