Skip to content

Commit f16841e

Browse files
authored
Merge pull request #216 from alexcoman/solutii/web
Adaugă exemple pentru laboratorul 6
2 parents 1e85fa3 + fb74a47 commit f16841e

File tree

11 files changed

+282
-123
lines changed

11 files changed

+282
-123
lines changed

web/README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ Exerciții rezolvate
88

99
### Exerciții propuse
1010

11-
- HTML
12-
- [blog](/web/exercitii/blog)
13-
- Dificultate: scăzută
14-
15-
16-
[0]: https://www.slideshare.net/busaco/html5-in-xxx-de-minute
11+
- [blog](/web/exercitii/blog)
12+
- Dificultate: scăzută
13+
- [tuxy-captcha](/web/exercitii/tuxy-captcha)
14+
- Dificultate: scăzută
15+
- [tuxy-bot](/web/exercitii/tuxy-captcha)
16+
- Dificultate: medie

web/exemple/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Exemple
2+
-------
3+
4+
Acest director conține exemple și fragmente de cod folosite în cadrul laboratoarelor.
5+
6+
Resursele din acest director au ca scop pregătirea unui mediu de lucru comun pentru toți participanții la laboratoare.
7+
8+
**Atenție** pentru că scopul acestor resurse este de a crea un mediu comun de lucru, în majoritatea cazurilor exemplele vor conține secvențe fundamental eronate, ineficiente, vulnerabile la diverse atacuri etc.

web/exemple/mysqli_example.php

Lines changed: 0 additions & 66 deletions
This file was deleted.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?php
2+
if(!defined("FLAG_OK")) { http_response_code(403); die();}
3+
4+
session_start();
5+
require('_include/_commands.php');
6+
7+
init();
8+
9+
# TODO(tuxy): Verifică dacă datele primite sunt valide
10+
# TODO(tuxy): Rescrie bucățile de cod redundante
11+
# TODO(tuxy): Codul este stufos și greu de menținut, trebuie găsită
12+
# o altă abordare.
13+
14+
if (!empty($_POST)) {
15+
16+
# TODO(tuxy): De verificat dacă este suficient.
17+
$command = htmlentities($_POST["command"]);
18+
19+
$cerere = explode(" ", $_POST["command"], 2);
20+
var_dump($cerere);
21+
switch ($cerere[0]) {
22+
case '/curata':
23+
$raspuns = curata();
24+
break;
25+
26+
case '/help':
27+
$raspuns = help();
28+
break;
29+
30+
case '/retine':
31+
if (count($cerere) < 2) {
32+
$raspuns = "Numar invalid de argumente";
33+
break;
34+
}
35+
36+
$argumente = explode(" ", $cerere[1], 2);
37+
if(count($argumente) != 2) {
38+
$raspuns = "Nu ati precizat valoarea.";
39+
break;
40+
}
41+
42+
$raspuns = retine($argumente[0], $argumente[1]);
43+
break;
44+
45+
case '/palindrom':
46+
if(count($cerere) < 2) {
47+
$raspuns = "Numar invalid de argumente";
48+
break;
49+
}
50+
51+
$raspuns = palindrom($cerere[1]);
52+
break;
53+
54+
default:
55+
$raspuns = 'Comanda nu este disponibila.';
56+
}
57+
58+
# FIXME(tuxy): Nu pare o idee foarte strălucită.
59+
array_push($_SESSION["istoric"], "~ $ $command");
60+
array_push($_SESSION["istoric"], $raspuns);
61+
}
62+
63+
?>
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
if(!defined("FLAG_OK")) { http_response_code(403); die();}
3+
4+
function init(){
5+
if(!isset($_SESSION["istoric"])) {
6+
$_SESSION["istoric"] = array();
7+
}
8+
9+
if(!isset($_SESSION["dictionar"])) {
10+
$_SESSION["dictionar"] = array();
11+
}
12+
13+
}
14+
15+
function retine($cheie, $valoare){
16+
$_SESSION["dictionar"][$cheie] = $valoare;
17+
return "Am invatat termenul `$cheie`";
18+
}
19+
20+
function palindrom($valoare) {
21+
if(isset($_SESSION["dictionar"][$valoare])){
22+
$valoare = $_SESSION["dictionar"][$valoare];
23+
}
24+
25+
# FIXME(tuxy): Funcția ar trebui să returneze o valoare booleană.
26+
if(strrev($valoare) == $valoare) {
27+
return "$valoare este palindrom.";
28+
}
29+
else {
30+
return "$valoare nu este palindrom.";
31+
}
32+
}
33+
34+
function calculeaza($argument1, $operator, $argument2) {
35+
return 0;
36+
}
37+
38+
function evalueaza($expresie) {
39+
return 0;
40+
}
41+
42+
function curata(){
43+
# FIXME(tuxy): Nu pare okay abordarea.
44+
session_destroy();
45+
init();
46+
}
47+
48+
function help(){
49+
# TODO(tuxy): Găsește o metodă să generezi lista de mai jos.
50+
return '/calculează valoare1 operator valoare2<br>' .
51+
'/curăță<br>' .
52+
'/evaluează expresie<br>' .
53+
'/help - Afișează detalii despre toate comenzile<br>' .
54+
'/palindrom valoare<br>' .
55+
'/reține cheie valoare<br>';
56+
}
57+
58+
?>

web/exemple/tuxy-bot/_include/_worker.php

Lines changed: 0 additions & 17 deletions
This file was deleted.

web/exemple/tuxy-bot/index.php

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,43 @@
1+
<?php
2+
define("FLAG_OK", true);
3+
require('_include/_bot.php');
4+
?>
5+
16
<!doctype html>
27
<html lang="ro">
8+
<head>
9+
<meta charset="utf-8">
10+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
11+
<title>Tuxy Bot</title>
312

4-
<head>
5-
<meta charset="utf-8">
6-
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
7-
<title>Tuxy Bot</title>
8-
9-
<meta name="author" content="" />
10-
<meta name="description" content="" />
11-
<meta name="viewport" content="width=device-width, initial-scale=1">
12-
</head>
13+
<meta name="author" content="Tuxy Pinguinescu" />
14+
<meta name="description" content="" />
15+
<meta name="viewport" content="width=device-width, initial-scale=1">
16+
</head>
1317

14-
<body>
15-
<header>
16-
<h1>Tuxy Bot</h1>
17-
</header>
18+
<body>
19+
<header>
20+
<h1>Tuxy Bot</h1>
21+
</header>
1822

19-
<section id="continut">
20-
<?php include_once('_include/_worker.php'); ?>
21-
</section>
23+
<section id="continut">
24+
<?php
25+
# FIXME(tuxy): Nu pare o idee buna.
26+
foreach($_SESSION["istoric"] as $comanda) {
27+
echo "$comanda <br>";
28+
}
29+
?>
30+
</section>
2231

23-
<section id="chat">
24-
<form action="#" method="post">
25-
Command: <input type="text" name="command">
26-
<input type="submit">
27-
</form>
28-
</section>
32+
<section id="chat">
33+
<form action="#" method="post">
34+
Comanda: <input type="text" name="command">
35+
<input type="submit">
36+
</form>
37+
</section>
2938

30-
<footer>
31-
<h3>Toate drepturile rezervate. Tuxy Pinguinesc</h3>
32-
</footer>
33-
</body>
39+
<footer>
40+
<h3>Toate drepturile rezervate. Tuxy Pinguinescu</h3>
41+
</footer>
42+
</body>
3443
</html>
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
if(!defined("FLAG_OK")) { http_response_code(403); die();}
3+
4+
session_start();
5+
$continut = '';
6+
$ecuatie = '';
7+
8+
function handle_post(){
9+
global $continut;
10+
global $ok;
11+
12+
$rezultat = intval($_SESSION["rezultat"]);
13+
unset($_SESSION["rezultat"]);
14+
15+
if(!isset($_SESSION["rezultat"])) {
16+
$continut = 'Nu a fost generata nici o ecuatie pentru dumneavoastra.';
17+
}
18+
elseif(!isset($_POST["rezultat"])) {
19+
$continut = 'Pentru a trece la pasul urmator trebuie sa rezolvati ecuatia.';
20+
}
21+
elseif($_POST["rezultat"] != $_SESSION["rezultat"]) {
22+
$continut = 'Solutia oferita nu este valida.';
23+
}
24+
elseif(intval($_POST["rezultat"]) === $_SESSION["rezultat"]) {
25+
$continut = 'Felicitari soluția oferita este cea corectă.';
26+
}
27+
else {
28+
# Acest caz nu a fost tratat.
29+
http_response_code(400);
30+
die();
31+
}
32+
}
33+
34+
35+
function handle_get(){
36+
global $ecuatie;
37+
38+
$coeficient = rand(1, 5);
39+
$operand = rand(1, 5);
40+
$necunoscuta = rand(1, 20);
41+
$rezultat = $coeficient * $necunoscuta + $operand;
42+
43+
$_SESSION["rezultat"] = $necunoscuta;
44+
$ecuatie = "$coeficient x + $operand = $rezultat";
45+
}
46+
47+
function main(){
48+
$method = $_SERVER['REQUEST_METHOD'];
49+
switch ($method) {
50+
case 'POST':
51+
handle_post();
52+
break;
53+
case 'GET':
54+
handle_get();
55+
break;
56+
default:
57+
die("Pentru moment aplicația nu suportă această metodă.");
58+
break;
59+
}
60+
}
61+
62+
?>

0 commit comments

Comments
 (0)