php无法将数据添加到数组中

时间:2012-05-15 15:52:47

标签: php arrays

这是一个问题:在输入一些关于学生的数据后,我需要在页面的顶部打印它们(形式一)。我已经设法为单个学生打印数据,但我无法将数据存储在$ 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>

1 个答案:

答案 0 :(得分:1)

您似乎误解了PHP的工作方式。为了提高效率和安全性,脚本运行时会破坏所有变量,并且当其他用户调用脚本时,该用户使用的变量不可见。

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

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

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