$session_IP=getenv("REMOTE_ADDR"); //session_name($session_IP);
session_start();
if ((!isset($bandymas))|($bandymas==0)) {
// if (!session_is_registered("session_IP")) {
// echo "band: $bandymas
";
session_register("session_IP");
$bandymas=0; session_register("bandymas");
// echo "session:".session_name()." IP ".session_is_registered("session_IP")."
";
$naujas_testas=true;
}
else{
// echo "bandym: $bandymas
";
$naujas_testas=false;
// echo "
"; $submit_text="Išsiųsk"; //patikriname ar į testą jau buvo kreiptasi $nepradzia=isset($pavarde)&isset($vardas)&isset($eladresas); if ($nepradzia) $nepradzia=strlen($pavarde)>1&strlen($vardas)>1&strlen($eladresas)>3; //$paz ateina iš blanko, jei vartotojas nusprendė įsirašyti einamąjį įvertinimą if (isset($paz)) if (!$nepradzia){ //Atsispausdiname informaciją įrašymo klaidos paieškai echo " pavarde".isset($pavarde); if (isset($pavarde)) echo $pavarde; echo " vardas".isset($vardas); if (isset($vardas)) echo $vardas; echo " eladresas".isset($eladresas); if (isset($eladresas)) echo $eladresas; exit("Įrašymo klaida ..."); } else{ // įrašome pažymį // pradžioje nuskaitome seną informaciją $file=file($rezultatuFailas); $kada=date(" H:i:s y.m.d "); // papildome informacija apie laiką ir vartotojo testo išlaikymo įvertinimą $file[$ID+1]=substr($file[$ID+1],0,strlen($file[$ID+1])-1).$kada.$paz."\n"; // informuojame vartotoją apie įrašytą rezultatą // echo "$vardas $pavarde,
$kada
testo rezultatas = $paz"; // echo ""; saugiaiIrasyk($rezultatuFailas,implode('',$file)); exit("$vardas $pavarde,
$kada
testo rezultatas = $paz"); // exit(""); // pakartotinis kreipimasis kazkodel neveikia: // echo "
Pakartoti testą";
}
elseif ($nepradzia){
// nuskaitome visus klausimus
include($klausimuFailas);
$visoKlaus=count($Klaus);
// Jei pateikiama pirmasis klausimas, pasisveikiname su vartotoju
if ($speta==0){
echo "Sveika(s), $vardas $pavarde!
";
$maxnext=count($Klaus[0])-1-1;
}
$speta+=1;
// Atvejis, kai naujo klausimo pradžia ar vartotojas nepateikė jokio atsakymo
if (!isset($atsak)) {
// Nuskaitome bendra informacija apie visus vartotojus
$file=file($rezultatuFailas);
if ($ID<0){
// testo pradžioje susirandame vartotojo ID arba papildome nauju
// ir papildome informacija apie testo laikymo pradžią
$N=count($file);
for ($i=0; $i<$N; $i+=3){
$s=$file[$i];
$pavarde_ = strtolower(strtok($s," "));
$vardas_ = strtolower(strtok(" "));
if (strcmp(strtolower($pavarde),$pavarde_)==0&
strcmp(strtolower($vardas),$vardas_)==0){
$ID=$i; break;
}
}
if ($ID<0){
$ID=$N;
$file[]="$pavarde $vardas $eladresas\n";
$file[]="\n"; $file[]="\n";
}
$pradzia=date(" H:i:s - ");
$file[$ID+1]=substr($file[$ID+1],0,strlen($file[$ID+1])-1).$pradzia."\n";
$file[$ID+2]="\n";
saugiaiIrasyk($rezultatuFailas,implode('',$file));
}
$neKlausti=array();
for ($i=0; $i<$visoKlaus; $i++) $neKlausti[] = "$i";
// suzinome kokie klausimai dar nepanaudoti
$neKlausti = array_diff($neKlausti,split(" ",$file[$ID+2]));
// foreach ($neKlausti as $value) echo $value;
$keys = array_keys($neKlausti);
// parenkame dar neklaustą klausimą ir jį užregistruojame vartotojo faile
$ik=intval($neKlausti[$keys[rand(0,count($neKlausti)-1)]]);
$file[$ID+2]=substr($file[$ID+2],0,strlen($file[$ID+2])-1)."$ik \n";
saugiaiIrasyk($rezultatuFailas,implode('',$file));
// įsimename koks dabar klausiamo klausimo numerį
$klausimoNr=$ik;
// pasiimame klausimą ir teisingo atsakymo indeksą
$klaus=$Klaus[$ik]; $teisingas=$Teisingas[$ik];
// užregistruojame, kad gautas naujas klausimas
$gautaKlausimu++;
echo "
$gautaKlausimu-asis klausimas: ";
$taskai+=count($klaus)-1-1;
if ($fsOK){
$s=$fs[$klausimoNr]; $i=strpos($s,' ');
$fs[$klausimoNr]=substr($s,0,$i+1).strval(intval(substr($s,$i+1))+1)."\n";
}
}
else{
// analogiškus veiksmus atliekame, jei atsakyta neteisingai
// $taskai-=1;
unset($klaus[$atsak]);
$maxtaskai=$maxnext-1; $maxnext+=count($klaus)-1-1;
if (count($klaus)==1) echo "Na ir nesiseka! (-: ";
elseif (rand(0,1)==0) echo "Neteisingai (-:, bandyk dar: ";
else echo "Nesiseka (-:, mėgink dar: ";
if (count($klaus)>1+1) include("naujas_testas.php");
} //$atsak==$teisingas
// jei su su statistikos failu viskas OK, papildome jį nauja informacija
if ($fsOK){
$f=fopen($statistikosFailas,'w');
if ($f){
flock($f,2); fputs($f,implode('',$fs)); flock($f,3); fclose($f);
} else echo "Negaliu atnaujinti $statistikosFailas failą ...";
}
// Naują klausimą pateikiame tik tuo atveju, jei teisingai pasirinko,
// arba išmetus vieną variantą - lieka vienintelis (teisingas)
if (($atsak==$teisingas)|count($klaus)==2){
unset($klaus); unset($atsak);
$submit_text="Naujas klausimas";
include("naujas_testas.php");
}
}//isset($pavarde...
$paz=round(10*($taskai+0.0)/max(1,$maxtaskai),2);
// echo "taskai=$taskai, maxtaskai=$maxtaskai, paz=$paz";
}
// o čia test pradžioje pasiimame duomenis apie vartotoją
else{// pradzia...
if (!$naujas_testas)
echo " Jei nori naujo testo, uždaryk visus naršyklių langus ir pradėk iš naujo";
else
{
?>
";
// kaupiame informaciją apie galimą maksimalų taškų skaičių
// atimame papildomai vieną, nes nulinis indeksas skirtas klausimui
if ($gautaKlausimu<=$maxKlausimu){
$maxtaskai=$maxnext; $maxnext+=count($klaus)-1-1;
}
include("naujas_testas.php");
}
// Vartotojas pasirinko vieną iš galimų atsakymų variantų
else { //isset($atsak)
$keys=array_keys($Klaus);
// jei nėra bendro klausimų/atsakymų statistikos failo, jį sukuriame
// (Uosyje bus blogai, nes negalėsime sukurti failo įrašymui)
if (!file_exists($statistikosFailas)){
$s="";
foreach ($keys as $v) $s.="0 0\n";
$f=fopen($statistikosFailas,'w');
if ($f){
flock($f,2); fputs($f,$s); flock($f,3); fclose($f);
} else echo "Negaliu atidaryti $statistikosFailas failą ...";
}
$fs=file($statistikosFailas);
$fsOK=isset($fs);
// jei bendras klausimų/atsakymų statistikos failas trumpesnis už klausimų failą,
// tai jį praplečiame
if ($fsOK&(count($fs)
";
// echo($klausimoNr);
// užregistruojame klausimą padidintami jo panaudojimo skaitliuką
if ($fsOK){
$s=$fs[$klausimoNr]; $i=strpos($s,' ');
$fs[$klausimoNr]=strval(intval(substr($s,0,$i))+1).substr($s,$i);
}
// jei atsakyta teisingai, padidiname vartotojų surinktų taškų skaičių
// ir bendroje statistikoje pažymime, kad į klausimą šį kartą atsakyta teisingai
if ($atsak==$teisingas) {
echo "Teisingai!Šiame kompiuteryje jau yra pradėtas ar buvo įvertintas testas