Scripts

Teach 2000 overhoor script

Met dit script kun je online je t2k (teach2000) bestanden overhoren. Zet al je teach2000 bestanden in de map lists en je kunt gaan overhoren. Ik heb dit script gemaakt om op school mijn teach2000 bestanden te kunnen overhoren. Want ik vergeet nogal eens wat te leren. Ik heb helaas geen voorbeeld online. Ik heb het wel op awardspace geprobeerd maar daar is een of andere vage fout. Het zou kunen dat je deze fout ook op localhost oid hebt. Ik weet helaas niet waar het fout gaat. P.S. Ik heb nog eigenlijk nooit scripts geschreven voor iemand anders. Eigenlijk alleen voor mezelf. Ik heb dan ook niet zon goed idee of dit nou netjes is gescript. Dus commentaar is welkom. Nog even een linkje naar de site waar je teach2000 kunt downloaden. je kunt daar ook woordenlijsten vinden Url: Klik Downloaden: http://phphulp.phpclub.nl/813_t2k.zip Updates - Nu ook werkend op php4 - Nu inclusief admin. je kunt het uitproberen in het voorbeeld: Klik Admin gegevens username: username password: password Let op: Ik heb de admin niet erg goed beveiligd. Weet je hier weinig van dan raad ik je aan alles wat in de map admin staat weg te laten en ook het bestand login niet te gebruiken. Zo heb je in ieder geval geen last van beveiligingslekken To-do lijstje - Gefixt Meerdere vragen - Gefixt Vreemd-bekend en Bekend-vreemd - Gefixt Meerkeuze-vragen - Gefixt Commentaar bij vragen weergeven - Gefixt Stopknop - Download-functie in de admin-module met t2kp protocol 8-12-2006 Ik was 2 bestanden vergeten hier te zetten. Deze zaten wel in de zip. Alsnog. Het gaat om implode.func.php en forms.func.php. Let ok op dat er in de pagina reading_signs.php geen spatie na de phpsluittag staat. Hierdoot krijg je een headers already sent error

teach-2000-overhoor-script
--== index.php ==--
[code]
<?php

/* 
    Auteur:         Mark Damen
    
    Naam:           index.php
    
    Beschrijving:   Een overzicht van alle t2k bestanden
                    
    Datum:           11-11-2006
    
*/

session_start();

function open()
{
	//foutmeldingen uitsluiten
	if (is_array($_SESSION['questions'])){
		
	    //hier een lus om r=te kijken of de sessie die nog openstaat nog echt vragen bevat
	    foreach(@$_SESSION['questions'] as $key => $value)
	    {
	        //als de 3key die aangeeft of ie al beantwoord 0 is is er dus 1 die nog niet is beantwoord
	        if ($_SESSION['questions'][$key]['already_answered'] == 0)
	        {
	            //open op true zetten
	            $return = true;
	            
	            //we hebben ons antwoord al dus de lus verder laten gaan slurpt geheugen
	            break;
	        }
	    }
	    
	    //als return nog niet is gemaakt dit alsnog doen en de waarde false geven
	    if (!isset($return))
	    {
	        $return = false;
	    }
	    
	    //return
	    return $return;
   }
   else
   {
	   //false returnen als questions niet bestaat
	   return false;
   }
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<link href="styles/style.css" rel="stylesheet" type="text/css" media="screen">
<title>
Kies uw woordenlijst
</title>
</head>
<body>

<div class="container">
    <div class="header">        
        <div class="text">
            Kies een woordenlijst
        </div>
    </div>
    
    <div class="content">
        <?php
        
        //als er nog een sessie met vragen bestaat die niet zijn beantwoord dit even weergeven        
        if (isset($_SESSION['questions']))
        {
            $open = open();
            
            //als open op true staat
            if (@$open == true)
            {
                echo "<div class=\"note\">";
                echo "<b>Let op</b>: Er staat nog een woordenlijst open van het vorige bezoek. ";
                echo "Als u een andere woordenlijst kiest wordt deze gewist. ";
                echo "Wilt u verder gaan aan uw vorige woordenlijst?<br /><br />";
                echo "<a href=\"form.php\">Doorgaan</a>";
                echo "</div>";
            }    
        }
        
        echo "<div class=\"small\">In het dropdown menu \"Vragen\" betekent V-B ook wel \"Vreemd-Bekend\" en B-V ook wel \"Bekend-Vreemd\"</div>";
        
        //de uitleg boven elk kopje
        echo "<div class=\"filename\"><b>Bestandsnaam</b></div>";
        echo "<div class=\"checkboxb\"><b>Negeren</b></div>";
        echo "<div class=\"orderb\"><b>Vragen</b></div>";
        echo "<div class=\"typeb\"><b>In Volgorde</b></div>";
        echo "<div class=\"typeb\"><b>Willekeurig</b></div><br />";
        
        //alle bestanden selecteren uit de map lists
        $files = glob("lists/*.t2k");
        
        //de lijsten sorteren
        natsort($files);
        
        //checken of er wel woordenlijsten zijn
        if ($files != false)
        {
            //alle bestanden met de extensie .t2k in een foreach doen
            foreach($files as $file)
            {
                $file = stripslashes($file);
                $file = explode("/",$file);
                $file = $file[1];
                
                echo "<form action=\"make.php\" method=\"get\">";
                
                //de bestandsnaam
                echo "<div class=\"filename\">" . $file . "</div>";
                
                //de dropdown voor het negeren van leestekens enzo
                echo "<div class=\"checkbox\">";
                echo "<select name=\"ignore\">";
                echo "<option value=\"none\">Niks negeren</a>";
                echo "<option value=\"capitals\">Hoofdletters</a>";
                echo "<option value=\"signs\">Leestekens</a>";
                echo "<option value=\"both\">Hoofdletters en leestekens</a>";
                echo "</select>";
                echo "</div>";
                
                //de dropdown voor Vreemd-Bekend en Bekend-Vreemd
                echo "<div class=\"order\">";
                echo "<select name=\"order\">";
                echo "<option value=\"B-V\">B-V</a>";
                echo "<option value=\"V-B\">V-B</a>";
                echo "</select>";
                echo "</div>";
                
                //een hidden input-veld die de bestandsnaam meesturrt
                echo "<input type=\"hidden\" name=\"file\" value=\"" . $file . "\">";
                
                //de knoppen voor In Volgorde en Door elkaar
                echo "<div class=\"type\"><input type=\"submit\" value=\"In Volgorde\" /></div>";
                echo "<div class=\"type\"><input type=\"submit\" name=\"type\" value=\"Door Elkaar\" /></div><br />";
                echo "</form>";
                
                //teller ophogen
                $i++;
            }
        }
        //als er geen woordenlijsten zijn
        else
        {
            echo "Er zijn geen woordelijsten gevonden";
        }

        ?>
    </div>

</div>
</body>
</html> 
[/code]

--== make.php ==--
[code]
<?php

/* 
    Auteur:         Mark Damen
    
    Naam:           make.php
    
    Beschrijving:   Een t2k bestand wordt als xml opgeslagen 
                    en zo halen we er data uit. Vervolgens 
                    worden er verschillende antwoorden uitgehaalt.
                    
    Datum:          11-11-2006
    
*/

session_start();
error_reporting(E_ALL);
ini_set("display_errors", 1);
header('Content-type: text/html; charset=utf-8');

//de directory waar de t2k bestanden staan
$dir = "lists/";

//kijken of het opgevraagde bestand bestaat
if (file_exists($dir . $_GET['file']))
{
    //de bestandsnaam die is opgevraagd in een variabele zetten
    $filename = $_GET['file'];
    
    //alle data uit het bestand halen en exploden zodat we voor elke vraag incl antwoorden een waarde krijgen
    $file = file_get_contents($dir . $filename);
    $file = explode('<item id="',$file);
    
    //alvast een array maken voor de vragen
    $questions = array();
    
    //de for lus waar alle geslitste stukken uit het bestand in gaan
    for($i=1; $i<count($file); $i++)
    {
        //de vragen selecteren
        preg_match_all('/<question>(.*?)<\/question>/',$file[$i],$question1[$i]);
        preg_match_all('/<alt_questions>(.*?)<\/alt_questions>/s',$file[$i],$alt_question[$i]);
        
        //de opmerkingen selecteren
        preg_match_all('/<remarks>(.*?)<\/remarks>/',$file[$i],$remarks[$i]);
        
        //selecteren of het multiple_choise is
        preg_match_all('/<is_multiplechoice>(.*?)<\/is_multiplechoice>/',$file[$i],$multiple[$i]);
		preg_match_all('/<mc_answers>(.*?)<\/mc_answers>/',$file[$i],$multiple_answers[$i]);
		        
        //de antwoorden uit de variabele halen
        preg_match_all('/<answer>(.*?)<\/answer>/s',$file[$i],$answer[$i]); //het antwoord dat altijd bestaat
        preg_match_all('/<second_answer>(.*?)<\/second_answer>/s',$file[$i],$second_answer[$i]); //het antwoordt dat soms bestaat en als second_answer in de xml staat
        preg_match_all('/<alt_answers>(.*?)<\/alt_answers>/s',$file[$i],$alt_answers[$i]); //de antwoorden die in de alt_answers staan
        
        //variabelen maken voor de vraag
        $question     	= $question1[$i][1][0]; 
        $alt_questions 	= @explode("\n", $alt_question[$i][1][0]);
        $question_final	= @array_merge(array($question), $alt_questions);
        
        //de opmerkingen
        $remarks_final 	= @$remarks[$i][1][0]; 
        
        //multiple_choise
        $multiple_final = $multiple[$i][1][0];
        $mc_answers 	= @$multiple_answers[$i][1][0];
        $mc_answers		= explode("<mc_answer id=", $mc_answers);
        $multiplechoise_answers = array();
        
        //een foreach om alle meerkeuzevragen weer eruit te halen
        foreach($mc_answers as $mc_answer)
        {
        	preg_match_all('/>(.*?)<\/mc_answer>/',$mc_answer,$multiple_answer);
        	$multiplechoise_answers[] = @$multiple_answer[1][0];
        }
        
        //de eerste waarde is leeg en kan dus weg
        array_shift($multiplechoise_answers);
        	
        //variabelen maken voor de antwoorden
        $answer1     = $answer[$i][1][0];
        $answer2     = @$second_answer[$i][1][0];
        $answer3     = @explode("\n",$alt_answers[$i][1][0]);
        
        //een array maken met de antwoorden van $1 en $2 en 1 met de overige antwoorden
        $answers1 = array($answer1,$answer2);
        $answers2 = $answer3;
        
        //samenvoegen van arrays zodat we een overzichtelijke array krijgen
        $answers = array_merge($answers1,$answers2);
        
        //als er is gekozen voor Vreemd-Bekend, de meerkeuze worden niet omgedraaid, om vage vragen te voorkomen
        if ($_GET['order'] == "V-B" AND $multiple_final == "N")
        {
        	//een tijdelijke variabele maken waarin gegevens omgekeerd opgeslagen staan
        	$answers_temp = $question_final;
        	$question_temp = $answers;
        	
        	//temps weggooien
        	unset($question_final);
        	unset($answers);
        	
        	//de uiteindelijke waardes vullen
        	$answers = $answers_temp;
        	$question_final = $question_temp;
        	
        	//temps weggooien
        	unset($question_temp);
        	unset($answers_temp);
        }
        
        //toevoegen aan vragen array
        $questions[] =     
            array("id" => $i,
            	  "multiple" => $multiple_final,
            	  "multiple_answers" => $multiplechoise_answers,
                  "questions" => $question_final,
                  "remarks" => $remarks_final,
                  "answers" => $answers,
                  "already_answered" => 0,
                  "wrong_answer" => 0
            );
    }
    
    //als er voor shuffle is gekozen
    if (isset($_GET['type']) AND $_GET['type'] == "Door Elkaar")
    {
        //shuffelen
        shuffle($questions);
        
        //een waarde aan de vragen array plakken die aangeeft of er sprake is van random volgorde
        $settings["random"] = 1;
    }
    else
    {
        //als er niet is gekozen voor random ook even aangeven
        $settings["random"] = 0;
    }
    
    
    //als er is gekozen leestekens te negeren
    if (isset($_GET['ignore']))
    {    
        switch($_GET['ignore'])
        {
            case 'signs':
                //een waarde in de settings sessie maken de hoofdletters niet moeten worden genegeerd
                $settings['signs'] = 1;
                $settings['capitals'] = 0;
                break;
                
            case 'capitals':
                //een waarde in de settings sessie maken de leestekens niet moeten worden genegeerd
                $settings['signs'] = 0;
                $settings['capitals'] = 1;
                break;
                
            case 'both':
                //een waarde in de settings sessie maken de leestekens en de hoofdletters moeten worden genegeerd
                $settings['signs'] = 1;
                $settings['capitals'] = 1;
                break;
                
            case 'none':
                //een waarde in de settings sessie maken waarin de leestekens en de hoofdletters niet moeten worden genegeerd
                $settings['signs'] = 0;
                $settings['capitals'] = 0;
                break;
        }    
    }
    
    //als er is gekozen voor Vreemd-Bekend
    if ($_GET['order'] == "V-B")
    {
	    //een waarde in de settings sessie
	    $settings["order"] = "V-B";
    }
    else
    {
	    //een waarde in de settings sessie
	    $settings["order"] = "B-V";
    }
    
    //als de sessie status nog bestaat deze even legen
    if (isset($_SESSION['status']))
    {
    	//sessie legen
        unset($_SESSION['status']);
    }
    
    //het opgevraagde bestand nog in de settings array zetten
    $settings['filename'] = $filename;
    
    //de sessie maken met de settings
    $_SESSION['settings'] = $settings;
    
    //de vragen array in een sessie zetten
    $_SESSION['questions'] = $questions;
    
    //redirect naar de pagina waar je de vragen beantwoordt
    header("Location: form.php");
}
else
{
    echo "Het opgevraagde bestand bestaat niet";
}
?> 
[/code]

--== form.php ==--
[code]
<?php

/* 
	Auteur: 		Mark Damen
	
	Naam:			form.php
	
	Beschrijving:	Het bestand waarin het antwoord op
					de vraag wordt ingevuld en vervolgens
					wordt de bezoeker doorgestuurt naar
					check.php waar het antwoord wordt 
					gecontroleerd.
					
	Datum:			11-11-2006
	
*/

session_start();
error_reporting(E_ALL);
header('Content-type: text/html; charset=utf-8');

//de functie die de goede vraag selecteert en wat gegevens achterhaalt includen
include 'functions/implode.func.php';

//de functie die de goede vraag selecteert en wat gegevens achterhaalt includen
include 'functions/forms.func.php';

//de functie die de goede vraag selecteert en wat gegevens achterhaalt includen
include 'getstuff.php';

//kijken of de sessie wel bestaat
if(!isset($_SESSION['questions']))
{
	exit("De benodigde sessie bestaat niet.");
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<link href="styles/style.css" rel="stylesheet" type="text/css" media="screen">
<title>
Overhoren | <?php echo $_SESSION['settings']['filename']; ?>
</title>
</head>
<body onLoad="document.form.answer.focus()">

<div class="container">
	<div class="header">		
		<div class="select">
			<?php
				echo (($_SESSION['settings']['random'] == 1) ? "Willekeurig" : "In Volgorde");
			?>
		</div>
			
		<div class="select">
			<?php
				if ($_SESSION['settings']['signs'] == 0 AND $_SESSION['settings']['capitals'] == 1) echo "Negeer hoofdletters";
				if ($_SESSION['settings']['signs'] == 1 AND $_SESSION['settings']['capitals'] == 0) echo "Negeer leestekens";
				if ($_SESSION['settings']['signs'] == 1 AND $_SESSION['settings']['capitals'] == 1) echo "Negeer hoofdletters en leestekens";
				if ($_SESSION['settings']['signs'] == 0 AND $_SESSION['settings']['capitals'] == 0) echo "Exact";
			?>
		</div>
		
		<div class="count">
			Nog <?php echo $count; ?> vragen<br />
			<?php echo $false; ?> vragen fout van de <?php echo $alreadyhad; ?>
		</div>
	</div>
	
	<div class="content">
	
		<?php
		if ($count > 0)
		{
			?>
			<div class="question">
				Vraag <?php echo $_SESSION['questions'][$qkey]["id"] . ": " . implode_question(" <span class=\"small\">of</span> ", $_SESSION['questions'][$qkey]["questions"]); ?>
			</div>
			
			<?php 
			echo $_SESSION['questions'][$qkey]["remarks"];
			echo genform($qkey, $_SESSION['questions'][$qkey]["multiple"], $_SESSION['questions'][$qkey]["multiple_answers"]); 
			?>
			
			<?php
			//als de sessie is geset
			if (isset($_SESSION['status']))
			{
				//het laatset record in de array
				$max = count($_SESSION['status'])-1;
			
				//imploden van antwoorden
				$the_answers = implode_question(" <span class=\"small\">of</span> ", $_SESSION['status'][$max]["session_answers"]);
				
				//in de array is 1 goed 0 fout. Aan de hand van dit goed of fout weergeven
				echo ($_SESSION['status'][$max]["status"] == 1 ? "Goed" : "<b>Fout.</b> Het moest zijn: " . $the_answers . "");
			}
			
			//een paar br's om het scherm wat hoger te maken
			echo "<br /><br /><br /><br /><br /><br />";
		}
		else
		{
			//uitrekenen van percentage goed
			$good = $alreadyhad - $false;
			$percent = $good / $alreadyhad;
			$percent = round($percent * 100);
		 
			//wat dingen om de woordenlijst opnieuw te starten met de waardes die zijn opgegeven bij het overhoren
			if ($_SESSION['settings']['signs'] == 1 AND $_SESSION['settings']['capitals'] == 1) $ignore = "both";
			if ($_SESSION['settings']['signs'] == 1 AND $_SESSION['settings']['capitals'] == 0) $ignore = "signs";
			if ($_SESSION['settings']['signs'] == 0 AND $_SESSION['settings']['capitals'] == 1) $ignore = "capitals";
			if ($_SESSION['settings']['signs'] == 0 AND $_SESSION['settings']['capitals'] == 0) $ignore = "none";
			
			//nog wat dingen om de woordenlijst te herstarten
			$order = $_SESSION['settings']['order'];
			$file = $_SESSION['settings']['filename'];
			
			//de link samenstellen
			$link = "make.php?ignore=" . $ignore . "&order=" . $order . "&file=" . $file;
			
			echo "Je hebt alle vragen beantwoord<br /><br />";
			echo "Je score is " . $percent . "%<br /><br />";
			echo "<a href=\"index.php\">Nieuwe lijst kiezen</a><br />";
			echo "<a href=\"" . $link . "\">Deze lijst opnieuw starten</a><br /><br /><hr /><br />";
		}
		?>
	</div>

</div>
</body>
</html> 
[/code]

--== check.php ==--
[code]
<?php

/* 
    Auteur:         Mark Damen
    
    Naam:           check.php
    
    Beschrijving:   Op deze pagina worden opgegeven antwoorden
                    uit een formulier gecheckt en vervolgens 
                    worden er dingen gewijzigd in de sessie
                    waaraan je kunt zien of de vraag al goed
                    is beantwoord. Zo niet kun je het aantal
                    fouten eruit halen.
                    
    Datum:          11-11-2006
    
*/

session_start();
error_reporting(E_ALL);
ini_set("display_errors", 1);
header('Content-type: text/html; charset=utf-8');

//de file met de functie voor de leestekens includen
include 'reading_signs.php';

//als er daadwerkelijk is verzonden
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    //als alle benodigde gegevens er wel zijn
    if (is_numeric($_POST['key']) && isset($_POST['answer']))
    {
        //variabelen aanmaken
        $key    = $_POST['key'];
        $answer = trim($_POST['answer']);
        
        //sessie in variabele zetten            
        $session = @$_SESSION['questions']; //dit is een array
        
        //de sessie verwijderen
        unset($_SESSION['questions']);
        
        //de leestekens strippen uit het antwoord als daarvoor is gekozen
        if (@$_SESSION['settings']['signs'] == 1)
        {
            $answer = reading_signs($answer);
        }

        //het antwoord converteren naar kleine letters als hofdletters moeten worden genegeerd
        if (@$_SESSION['settings']['capitals'] == 1)
        {
            //het antwoord strtolower maken
            $answer = strtolower($answer);
            
            //een lus maken om ook de antwoorden strtolower te maken
            foreach($session[$key]['answers'] as $skey => $value)
            {
                $session[$key]['answers'][$skey] = strtolower($value);
            }
        }
        
        //kijken of de opgevraagde waarde aan de hand van de key wel bestaat in de sessie
        if (is_array($session) AND is_array($_SESSION['settings']))
        {
            $status = @$_SESSION['status'];
            
            //controleren of het ingevulde antwoord voorkomt in de antwoorden array van de sessie
            if (in_array($answer, $session[$key]['answers']) AND $answer != "")
            {                
                //de sessie setten waarin staat of het antwoord goed was
                $status[] = array("key" => $key+1, "question" => $session[$key]['questions'], "user_answer" => $answer, "session_answers" => $session[$key]['answers'], "status" => 1);
                
                //een waarde veranderen van 0 in 1 die aangeeft dat de vraag goed is beantwoord
                $session[$key]['already_answered'] = 1;
            }
            else
            {
                //de sessie setten waarin staat of het antwoord fout was
                $status[] = array("key" => $key+1, "question" => $session[$key]['questions'], "user_answer" => $answer, "session_answers" => $session[$key]['answers'], "status" => 0);
                
                //aangeven dat de vraag nog niet goed is beantwoord
                $session[$key]['already_answered'] = 0;
                
                //de waarde waarin het aantal fouten staat met 1 ophogen
                $session[$key]['wrong_answer'] = $session[$key]['wrong_answer']+1;
            }
            
            //als er is gekozen voor een willikeurige volgorde
            if (@$_SESSION['settings']['random'] == 1)
            {
                //shuffelen
                shuffle($session);
            }
            
            //de sessie opnieuw aamaken
            $_SESSION['questions'] 	= $session;
            $_SESSION['status'] 	= $status;
            
            //redirecten naar form
            header("Location: form.php");
        }
        else
        {
            echo "De opgevraagde waarde komt niet voor in de sessie";
        }
    }
    else
    {
        //niet alle benodigde post-gegevens zijn er -> foutmelding
        echo "De post-gegevens zijn niet volledig of niet correct";
    }
}

?> 
[/code]

--== getstuff.php ==--
[code]
<?php

//tellers op nul zetten
$count = 0;
$false = 0;
$alreadyhad = 0;

//de foreach van de sessie
foreach($_SESSION['questions'] as $key=>$value)
{
    //als de 3de waarde 0 is moet de vraag nog gesteld worden
    if ($_SESSION['questions'][$key]['already_answered'] == 0)
    {
           if (@$gotit != 1)
           {
              //variabele key maken
              $qkey = $key;
        
              //een waarde setten waardoor er geen tweede key kan komen
              $gotit = 1;
           }

        //de teller ophogen voor de vragen die nog moeten
        $count++;
    }
    else
    {
        //de teller ophogen voor het aantal vragen dat al is geweest
        $alreadyhad++;
    }
    
    if ($_SESSION['questions'][$key]['wrong_answer'] > 0)
    {
        //de false variabele ophogen met het aantal fouten die in de waarde staan
        $false = $false+$_SESSION['questions'][$key]['wrong_answer'];
        
        //als er al 1 fout is is de vraag dus ook al beantwoord
        $alreadyhad = $alreadyhad+$_SESSION['questions'][$key]['wrong_answer'];
    }
}
?> 
[/code]

--== reading_signs.php ==--
[code]
<?php

function reading_signs($input)
{
    //hier moet je dus even in de bovenste array de leestekens zetten en in de onderste array hetgene waardoor ze vervangen moeten worden
    $signs         = array("!", ",", ".","'");
    $replace     = array("", "", "", "");
    $output = str_replace($signs, $replace, $input);
    
    return $output;
}

?>
[/code]

--== login.php ==--
[code]
<?php
/* 
    Auteur:         Mark Damen
    
    Naam:            login.php
    
    Beschrijving:    De login pagina voor de admin
                    
    Datum:            11-11-2006
    
*/

session_start();

//de login functie includen
include 'functions/login.func.php';

//een array met username en password
$user = array("username", "password");

//als er is verzonden
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
	//de login functie uitvoeren
	login($_POST['username'], $_POST['password'], $user);
}		
else
{		
	?>

	<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html>
	<head>
	<link href="styles/style.css" rel="stylesheet" type="text/css" media="screen">
	<title>
	Kies uw woordenlijst
	</title>
	</head>
	<body>
	
	<div class="container">
	    <div class="header">        
	        <div class="text">
	            Beheerders Login
	        </div>
	    </div>
	    
	    <div class="content">
	    
			<form action="login.php" method="post">
			Gebruikersnaam:<br />
			<input type="text" name="username"><br /><br />
			
			Wachtwoord:<br />
			<input type="password" name="password"><br /><br />
			<input type="submit" value="Inloggen">
			</form>
				
		</div>
	</div>
	</body>
	</html>
	
	<?php
}
?>
[/code]

--== functions/login.func.php ==--
[code]
<?php

function login($username, $password, $good)
{
	//als gebruikersnaam en wachtwoord kloppen
	if (($username == $good[0]) AND ($password == $good[1]))
	{
		//een sessie setten
		$_SESSION['logged_in'] = true;
		header("Location: admin/index.php");
	}
	else
	{
		return "Deze combinatie van gebruikersnaam en wachtwoord is foutief";
	}
}
?>
[/code]

--== functions/forms.func.php ==--
[code]
<?php

function genform($key, $multiple, $posible)
{
	//een deel van het formulier
	$return  = "<form action=\"check.php\" method=\"post\" name=\"form\">";
	
	//als multiple choise Yes is, even een formpje gegereren
	if ($multiple == "Y")
	{
		$return .= multiple($posible);
	}
	
	//het laatste deel van het formulier
	$return .= "<br /><input type=\"text\" name=\"answer\" class=\"answer\">";
	$return .= "<input type=\"hidden\" name=\"key\" value=\"" .  $key ."\">";
	$return .= "<input type=\"submit\" value=\"Controleer\" class=\"submit\"><br /><br />";
	$return .= "</form>";
	
	return $return;
}

function multiple($posibilitys)
{
	//teller
	$i = 0;
	
	//letters in een array
	$letter = range("A", "Z");
	
	//$return op null zetten
	$return = null;
	
	//alle mogelijkheden doorlopen
	foreach($posibilitys as $posible)
	{
		$return .= $letter[$i] . ": " . $posible . "<br />";
		
		//teller ophogen
		$i++;
	}

	//return
	return $return;
}
?>
[/code]

--== implode.func.php ==--
[code]
<?php

function implode_question($spacer, $array)
{
	//variabele return aanmaken zonder waarde
	$return = null;
	
	//de teller op nul zetten
	$i = 0;
	
	//de foreachlus
	foreach($array as $value)
	{
		//als de teller niet 0 is
		if ($i != 0 && !empty($value))
		{
			$return .= "<span class=\"small\">" . $spacer . "</span>" . $value;
		}
		elseif($i == 0 && !empty($value))
		{
			$return .= $value;
		}
		
		//teller ophogen
		$i++;
	}
	
	return $return;
}

?>
[/code]

--== admin/index.php ==--
[code]
<?php
/* 
    Auteur:         Mark Damen
    
    Naam:           index.php
    
    Beschrijving:   Een overzicht van alle t2k bestanden die 
					kunnen worden verwijderd en er kunnen 
					woordenlijsten worden toegevoegd
                    
    Datum:          11-11-2006
    
*/

session_start();

//de functie includen om een bestand te uploaden
include 'functions/upload.func.php';

//als er is ingelogd
if ($_SESSION['logged_in'] == true)
{
	//als er is verzonden
	if ($_SERVER['REQUEST_METHOD'] == "POST")
	{
		//als de functie upload "ext" teruggeeft
		if(upload() == "ext")
		{
			//een foutmelding geven dat de extensie niet is toegestaan
			echo "Het opgegeven bestand had een verkeerde extensie<br /><br />";
		}
		//als de functie upload "upload" teruggeeft
		elseif(upload() == "upload")
		{
			//de foutmelding die komt als het uploaden foutging
			echo "Er ging iets fout bij het uploaden<br /><br />";
		}
	}
	else
	{
		?>
	
		<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
		<html>
		<head>
		<link href="style.css" rel="stylesheet" type="text/css" media="screen">
		<link href="../styles/style.css" rel="stylesheet" type="text/css" media="screen">
		<title>
		Admin ControlPanel
		</title>
		</head>
		<body>
		
		<div class="container">
		    <div class="header">        
		        <div class="text">
		            Admin ControlPanel
		        </div>
		    </div>
		    
		    <div class="content">
				
				<a href="logout.php">Uitloggen</a><br /><br />
				Uploaden woordenlijst
				<form action="index.php" enctype="multipart/form-data" method="post">
				<input type="file" name="file" /><br />
				<input type="submit" value="OK" /><br />
				</form><br />
				
				<b>Bestandsnaam</b><br />
				
				<?php
				
				//alle bestanden selecteren uit de map lists
				$files = glob("../lists/*.t2k");
				
				//de lijsten sorteren
				natsort($files);
				
				//checken of er wel woordenlijsten zijn
				if ($files != false)
				{
				    //alle bestanden met de extensie .t2k in een foreach doen
				    foreach($files as $file)
				    {
				    	//form openen
						echo "<form action=\"unlink.php\" method=\"post\">";
				
				    	//namen van directroy's hoeven we niet. Even eruit filteren
				    	$file = stripslashes($file);
				        $file = explode("/",$file);
				        $file = $file[2];
				            
				        //de bestandsnamen weergeven
				    	echo "<input type=\"checkbox\" name=\"del[]\" value=\"" . $file . "\"><a href=\"download.php?file=" . $file . "\">" . $file . "</a><br />";
					}
					
					//de submit-knop en het fprmuliertje sluiten
					echo "<br /><input type=\"submit\" value=\"Verwijderen\">";
					echo "</form>";
				}
				else
				{
					echo "Geen bestanden gevonden<br />";
				}
				
				?>
			</div>
		</div>
		</body>
		</html>
		<?php
	}
}
//als er niet is ingelogd
else
{
	header("Location: ../login.php");
}
?>
[/code]

--== admin/download.php ==--
[code]
<?php
/* 
    Auteur:         Mark Damen
    
    Naam:           download.php
    
    Beschrijving:   Deze pagina is ervoor om alle t2k bestanden ter download aan te bieden onder de admin
                    
    Datum:          11-11-2006
    
    Met dank aan:	PHP Newbie
    
*/

session_start();

//als er is ingelogd
if ($_SESSION['logged_in'] == true)
{
	//als het opgegeven bestand bestaat in de map lists
	if (file_exists("../lists/" . $_GET['file']))
	{
		//de header verzenden die ervoor zorgen dat er wordt gedownload
		header("Content-type: application/octet-stream"); 
		header("Content-Disposition: attachment; filename=" . $_GET['file']); 
	}
	
	//als het opgegeven bestand niet bestaat
	else
	{
		echo "Het opgevraagde bestand bestaat niet.";
		exit();
	}
}
else
{
	//als er niet is ingelogd
	header("Location: ../login.php");
}
?>
[/code]

--== admin/unlink.php ==--
[code]
<?php
//als er is verzonden
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
	//alle opgegeven bestanden doorlopen
	foreach($_POST['del'] as $del)
	{
		//als het bestand bestaat
		if (file_exists("../lists/" . $del))
		{
			//verwijderen van het bestand
			unlink("../lists/" . $del);
		}
	}
	//redirecten naar pagina met woordenlijsten
	header("Location: index.php");
}
else
{
	//als er niet op verzonden is gedouwd hebben we hier niets te zoeken -> terug naar admin-page
	header("Location: index.php");
}
?>
[/code]

--== admin/logout.php ==--
[code]
<?php
session_start();

//als er is ingelogd
if ($_SESSION['logged_in'] == true)
{
	session_unset();
	header("Location: ../login.php");
}
else
{
	header("Location: ../login.php");
}

?>
[/code]

--== admin/functions/upload.func.php ==--
[code]
<?php
/* 
    Auteur:         Mark Damen
    
    Naam:           upload.func.php
    
    Beschrijving:   De upload-functie
                    
    Datum:          11-11-2006
    
*/

function upload()
{
	//een rijtje met de toegestane extensies
	$extensions = array("t2k");
	
	//we hebben de extensie wel nodig. Want plaatjes hebben we niet nodig tussen de woordenlijsten
	$extension = strrev($_FILES['file']['name']);
	$extension = explode(".", $extension);
	$extension = strrev($extension[0]);
	
	//als extensie een toegelaten bestand is
	if (in_array($extension, $extensions))
	{
		if (is_uploaded_file($_FILES['file']['tmp_name']))
		{
			if (move_uploaded_file($_FILES['file']['tmp_name'], "../lists/" . $_FILES['file']['name']))
			{
				//de pagina opnieuw laden, dan zien we meteen de nieuwe woordenlijst in het rijtje
				header("Location: index.php");
			}
			else
			{
				//return upload, dan weten we waar het fout ging
				return "upload";
			}
		}
		else
		{
			//return upload, dan weten we waar het fout ging
			return "upload";
		}
	}
	
	//return ext, dan weten we waar het fout ging
	return "ext";
}

?>
[/code]

Reacties

0
Nog geen reacties.