2012-05-15 4 views
1

여기에 질문이 있습니다. 학생에 대한 데이터를 입력 한 후 페이지 상단에 양식을 인쇄해야합니다. 한 학생의 데이터를 인쇄 할 수 있었지만 $ studenti 배열에 데이터를 저장할 수 없으므로 모든 학생의 데이터가 인쇄됩니다.PHP가 배열에 데이터를 추가 할 수 없습니다.

<?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> 
+0

나머지 학생들의 데이터는 어디에 있습니까? 한 학생의 데이터 만 세션에 저장합니다. –

+0

dodaj ($ studenti) 줄에서 세션의 데이터를 배열에 추가하면 안됩니까? –

답변

1

당신이 PHP가 작동하는 방식을 오해하는 것 같다 여기에 내가 (내가 얘기를 깜빡 했네요, 내가 이것에 대한 세션을 사용할 필요가) 사용 코드가있다. 효율성과 보안을 위해 스크립트가 실행될 때 모든 변수가 파괴되며이 사용자에 대해 사용 된 변수는 다른 사용자가 호출 할 때 스크립트에서 볼 수 없습니다.

$ _SESSION은 예외입니다. $ _SESSION의 데이터는 세션이 만료 될 때까지 보존되지만 여전히 고유 한 사용자 (쿠키로 식별)에게만 표시됩니다.

스크립트를 다시 호출 할 때 (다른 세션 사용) 스크립트의 데이터를 저장하려면 파일에 데이터를 쓰거나 데이터베이스를 사용해야합니다.

PS의 스크립트는 XSSCSRF 취약점을 소개합니다. 이전에 많은 사람들과 똑같은 실수를 저 지르지 않도록하십시오.

관련 문제