Révision 0bd646e4
Ajouté par Victor PONGNIAN il y a environ 11 ans
addParams.php | ||
---|---|---|
1 | 1 |
<!DOCTYPE html> |
2 | 2 |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> |
3 |
<head> |
|
4 |
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> |
|
5 |
<link rel="stylesheet" media="screen" href="css/index_style.css" /> |
|
6 |
<title>Positionnerment dun panoramique</title> |
|
3 | 7 |
<?php |
4 |
if(isset($_GET['dir']) && isset($_GET['panorama'])){ |
|
5 |
|
|
6 |
$_GET['dir'] = htmlspecialchars($_GET['dir']); //Protection des variables GET. |
|
7 |
$_GET['panorama'] = htmlspecialchars($_GET['panorama']); // ... |
|
8 |
|
|
9 |
if (isset($_POST['param_latitude']) && isset($_POST['param_longitude']) |
|
10 |
&& isset($_POST['param_altitude']) && isset($_POST['param_elevation']) |
|
11 |
&& isset($_POST['param_title']) && isset($_POST['param_loop'])) { |
|
12 |
|
|
13 |
foreach ($_POST as $value) //Protection des variables POST. |
|
14 |
{ |
|
15 |
$value = htmlspecialchars($value); |
|
16 |
} |
|
8 |
// tableau de vérification de conformité |
|
9 |
$params = array('title' => array('name' => 'titre', |
|
10 |
'pattern' => '^.{1,50}$', |
|
11 |
'required' => true), |
|
12 |
'latitude' => array('name' => 'latitude', |
|
13 |
'type' => 'numeric', |
|
14 |
'min' => -180, |
|
15 |
'max' => 180, |
|
16 |
'required' => true), |
|
17 |
'longitude' => array('name' => 'longitude', |
|
18 |
'type' => 'numeric', |
|
19 |
'min' => -180, |
|
20 |
'max' => 180, |
|
21 |
'required' => true), |
|
22 |
'altitude' => array('name' => 'altitude', |
|
23 |
'type' => 'numeric', |
|
24 |
'min' => -180, |
|
25 |
'max' => 180, |
|
26 |
'required' => true), |
|
27 |
'loop' => array('name' => 'image_loop', |
|
28 |
'type' => 'boolean', |
|
29 |
'required' => false), |
|
30 |
'dir' => array('required' => true), |
|
31 |
'panorama' => array('required' => true)); |
|
32 |
$wrong = array(); |
|
33 |
$values = array(); |
|
34 |
// vérification de la conformité |
|
35 |
foreach($params as $param => $check) { |
|
36 |
if (isset($_REQUEST['param_'.$param])) { |
|
37 |
$tst = $_REQUEST['param_'.$param]; |
|
38 |
if ((isset($check['min']) || isset($check['max'])) && ! is_numeric($tst)) $wrong[$param] = "<em>$tst</em> ne correspond pas à une valeur numérique"; |
|
39 |
else if (isset($check['min']) && $tst < $check['min']) $wrong[$param] = "<em>$tst</em> trop bas"; |
|
40 |
else if (isset($check['max']) && $tst > $check['max']) $wrong[$param] = "<em>$tst</em> trop haut"; |
|
41 |
else if (isset($check['pattern']) && preg_match('/'.preg_quote($check['pattern']).'/', $tst)) $wrong[$param] = "<em>$tst</em> non conforme"; |
|
42 |
else $values[$param] = $tst; |
|
43 |
} else if (isset($check['required']) && $check['required']) { |
|
44 |
$wrong[$param] = '<em>$tst</em> est un paramètre manquant'; |
|
45 |
} |
|
46 |
} |
|
17 | 47 |
|
18 |
/* --- Vérification des inputs avec des regex. ---*/ |
|
19 |
// Pour la latitude : ( Le javascript bride entre -90 et 90) |
|
20 |
if (preg_match("#^(\-?[1-9]+[0-9]?[.,]{0,1}[0-9]{0,6}|\-?[0-9]{1}[.,]{0,1}[0-9]{0,6})$#", $_POST['param_latitude'])) |
|
21 |
{ |
|
22 |
$lat = $_POST['param_latitude']; |
|
23 |
//echo 'Le ' . $_POST['param_latitude'] . ' est un numéro <strong>valide</strong> !'; |
|
24 |
} |
|
25 |
else |
|
26 |
{ |
|
27 |
echo 'Le ' . $_POST['param_latitude'] . ' n\'est pas valide, recommencez !'; |
|
28 |
|
|
29 |
} |
|
30 |
|
|
31 |
// Pour la longitude : ( Le javascript bride entre -180 et 180) |
|
32 |
if (preg_match("#^(\-?[1-9]+[0-9]?[.,]{0,1}[0-9]{0,6}|\-?[0-9]{0,1}[.,]{1}[0-9]{0,6})$#", $_POST['param_longitude'])) |
|
33 |
{ |
|
34 |
$lon = $_POST['param_longitude']; |
|
35 |
//echo 'Le ' . $_POST['param_longitude'] . ' est un numéro <strong>valide</strong> !'; |
|
36 |
} |
|
37 |
else |
|
38 |
{ |
|
39 |
echo 'Le ' . $_POST['param_longitude'] . ' n\'est pas valide, recommencez !'; |
|
40 |
|
|
41 |
} |
|
42 |
|
|
43 |
// Pour l'altitude ( Le javascript bride entre 0 et 500) |
|
44 |
if (preg_match("#^([1-9]+[0-9]{0,4}|0)$#", $_POST['param_altitude'])) |
|
45 |
{ |
|
46 |
$alt = $_POST['param_altitude']; |
|
47 |
//echo 'Le ' . $_POST['param_altitude'] . ' est un numéro <strong>valide</strong> !'; |
|
48 |
} |
|
49 |
else |
|
50 |
{ |
|
51 |
echo 'Le ' . $_POST['param_altitude'] . ' n\'est pas valide, recommencez !'; |
|
52 |
|
|
53 |
} |
|
54 |
|
|
55 |
// Pour l'élévation ( Le javascript bride entre -10 et 10) |
|
56 |
if (preg_match("#^(\-?[1-9]+[0-9]?|0)$#", $_POST['param_elevation'])) |
|
57 |
{ |
|
58 |
$ele = $_POST['param_elevation']; |
|
59 |
//echo 'Le ' . $_POST['param_elevation'] . ' est un numéro <strong>valide</strong> !'; |
|
60 |
} |
|
61 |
else |
|
62 |
{ |
|
63 |
echo 'Le ' . $_POST['param_elevation'] . ' n\'est pas valide, recommencez !'; |
|
64 |
|
|
65 |
} |
|
66 |
|
|
67 |
$loop = $_POST['param_loop']; // Variable radio automatiquement présente |
|
68 |
if(isset($lat) && isset($lon) && isset($alt) && isset($ele) && isset($loop)) { |
|
69 |
|
|
70 |
// On recherche le dossier correspondant au panorama en question |
|
71 |
$dir_file = "/var/www/data/tsf2/vpongnian/panorama/".$_GET['dir']."/".$_GET['panorama']; |
|
72 |
$dir_open = opendir($dir_file); |
|
73 |
while (false !== ($file = readdir($dir_open))) { |
|
74 |
// Si on trouve bien des tuiles |
|
75 |
if (preg_match('/(.*)_[0-9]+_[0-9]+_[0-9]+\.jpg$/', $file, $reg)) { |
|
76 |
$prefix = $reg[1]; |
|
77 |
$new_param_file = $prefix.".params"; |
|
78 |
break; // On sort à la première tuile trouvée |
|
79 |
} |
|
80 |
} |
|
81 |
closedir($dir_open); |
|
82 |
|
|
83 |
$retour = "\n"; |
|
84 |
// On vérifie qu'on a bien crée un nouveau fichier .params et on écrit dedans. |
|
85 |
if(isset($new_param_file)){ |
|
86 |
$param_file = fopen($dir_file."/".$new_param_file,'a+'); |
|
87 |
fputs($param_file,"titre = \"" . $_POST['param_title'] . "\""); |
|
88 |
fputs($param_file,$retour); |
|
89 |
fputs($param_file,"latitude = " . $lat); |
|
90 |
fputs($param_file,$retour); |
|
91 |
fputs($param_file,"longitude = " . $lon); |
|
92 |
fputs($param_file,$retour); |
|
93 |
fputs($param_file,"altitude = " . $alt); |
|
94 |
fputs($param_file,$retour); |
|
95 |
fputs($param_file,"elevation = " . $alt); |
|
96 |
fputs($param_file,$retour); |
|
97 |
fputs($param_file,"image_loop =" . $loop); |
|
98 |
fputs($param_file,$retour); |
|
99 |
fclose($param_file); |
|
100 |
|
|
101 |
echo 'Paramétrage OK. Retour au panorama'; |
|
102 |
header("Refresh: 1; URL=index.php"); |
|
103 |
} else { |
|
104 |
|
|
105 |
echo "<script>alert(\"impossible d'écrire dans le fichier\")</script>"; |
|
106 |
} |
|
107 |
} |
|
48 |
if (isset($values['panorama'])) { |
|
49 |
$back_url = sprintf('panorama.php?panorama=%s', $values['panorama']); |
|
50 |
if (isset($values['dir'])) $back_url .= '&dir='. $values['dir']; |
|
51 |
} else { |
|
52 |
$back_url = '.'; |
|
53 |
} |
|
54 |
|
|
55 |
if (count($wrong) == 0) { |
|
56 |
// On recherche le dossier correspondant au panorama en question |
|
57 |
$dir_file = "./".$values['dir']."/".$values['panorama']; |
|
58 |
$dir_open = opendir($dir_file); |
|
59 |
while (false !== ($file = readdir($dir_open))) { |
|
60 |
// Si on trouve bien des tuiles |
|
61 |
if (preg_match('/(.*)_[0-9]+_[0-9]+_[0-9]+\.jpg$/', $file, $reg)) { |
|
62 |
$prefix = $reg[1]; |
|
63 |
$new_param_file = $prefix.".params"; |
|
64 |
break; // On sort à la première tuile trouvée |
|
65 |
} |
|
66 |
} |
|
67 |
closedir($dir_open); |
|
68 |
|
|
69 |
// On vérifie qu'on a bien créée un nouveau fichier .params et on écrit dedans. |
|
70 |
if(isset($new_param_file)){ |
|
71 |
$fid = fopen($dir_file."/".$new_param_file,'a+'); |
|
72 |
echo '<p>Les valeurs suivantes sont utilisées.</p>'."\n"; |
|
73 |
echo "<dl>\n"; |
|
74 |
foreach ($values as $k => $v) { |
|
75 |
echo "$k -$v<br/>\n"; |
|
76 |
if (isset($params[$k]['name'])) { |
|
77 |
$nm = $params[$k]['name']; |
|
78 |
if (isset($params[$k]['type']) && $params[$k]['type'] == 'numeric') { |
|
79 |
$vf = $v; |
|
80 |
} else if (isset($params[$k]['type']) && $params[$k]['type'] == 'boolean') { |
|
81 |
$vf = $v ? "true" : "false"; |
|
108 | 82 |
} else { |
109 |
echo '<script>alert(\'$_POST manquant\')</script>'; |
|
110 |
header("Refresh: 2; URL=javascript:history.back();"); |
|
83 |
$vf = "\"$v\""; |
|
111 | 84 |
} |
112 |
} else { |
|
113 |
echo '<script>alert(\'La destinaton est manquante\')</script>'; |
|
114 |
header("Refresh: 2; URL=javascript:history.back();"); |
|
85 |
fputs($fid, "$nm = $vf\n"); |
|
86 |
printf("<dt>%s</dt>\n<dd>%s</dd>\n", $nm, $vf); |
|
87 |
} |
|
88 |
} |
|
89 |
echo "</dl>\n"; |
|
90 |
fclose($fid); |
|
91 |
echo '<p class="succes">Paramétrage terminé.</p>'."\n"; |
|
92 |
} else { |
|
93 |
printf("<p class=\"error\">impossible d'écrire dans le fichier '%s'</p>\n", $dir_file); |
|
94 |
} |
|
95 |
} else { |
|
96 |
echo '<p class="error">Les valeurs suivantes sont incorrectes.</p>'."\n"; |
|
97 |
echo "<dl>\n"; |
|
98 |
foreach ($wrong as $k => $v) { |
|
99 |
printf("<dt>%s</dt>\n<dd>%s</dd>\n", $k, $v); |
|
100 |
} |
|
101 |
echo "</dl>\n"; |
|
115 | 102 |
} |
103 |
printf('<a href="%s">Retour au panorama</a></p>'."\n", $back_url); |
|
116 | 104 |
|
117 | 105 |
?> |
118 | 106 |
</html> |
Formats disponibles : Unified diff
remise en forme du travail de Victor Pongnian suit à son stage
Il reste pas mal de cosmétique à revoir mais le système devrait déjà être utilisable dans l'état.