Projet

Général

Profil

Révision 0bd646e4

Ajouté par Victor PONGNIAN il y a plus de 10 ans

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.

Voir les différences:

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 .= '&amp;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