Scusate avrei un quesito da porvi.. Agli elementi <script> e <style> in XHTML inviati come text/html devono essere applicati gli escape usando stringhe (#PCDATA).
Supponendo che io abbia una pagina xhtml con output e faccio l'invio post a se stessa con jquery ajax.
Nella funzione callback che recupera il testo dovrei convertire i "<",">" o dovrei verificare se sia una richiesta jquery ajax ed eventualmente effettuare l'escape dei caretteri citati prima direttamente nel sorgente xhtml?
ecco il codice completo.
session_start.php
Codice PHP:
<?php
if(empty($dati3)){
$dati3[0] = 1617;
$dati3[1] = 1516;
$dati3[2] = 1415;
}
// Valid session
$i = 0;
while($i <= count($dati3)-1){
if(!empty($_COOKIE['season']) && (int)$_COOKIE ['season'] == $dati3[$i]){
$dati2 = (int)$_COOKIE['season'];
if(!empty($dati)){
$i = $j;
if($dati == $dati2){
unset($dati);
}
}
break;
}elseif(!empty($_COOKIE['season']) && $i == count($dati3)-1 || empty($_COOKIE['season'])){
$i = 0;
if(empty($dati)){
$dati = $dati3[$i];
}else{
if(empty($_COOKIE['season']) || (int)$_COOKIE['season'] != $dati){
$i = $j;
}
}
break;
}
if(!empty($dati)){
if(empty($dati2) && !empty($_COOKIE['season']) && $_COOKIE['season'] == $dati){
$i = $j;
continue;
}
}
$i++;
}
if(!empty($dati)){
//*Name of session
session_name('season');
// Id of session
session_id((string)$dati);
//Start the session
session_start();
$_SESSION['season']=(string)$dati;
session_unset();
unset($_SESSION['season']);
session_destroy();
session_write_close();
}
?>
set_season.php
Codice PHP:
<form method="post" action="<?php echo "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>">
<p>
<select id="soflow-color" name="get_season">
<?php
if($i != 0){
$dati = $dati3[$i];
$dati3[$i] = $dati3[0];
$dati3[0] = $dati;
}
$dati = $dati3[0];
unset($dati3[0]);
rsort($dati3);
$i = 0;
$dati4 = '';
while($i <= count($dati3)-1){
$dati4 .= '<option value="'.$dati3[$i].'">20'.substr(chunk_split($dati3[$i], 2, '/20'), 0, -3)."</option>\r\n";
$i++;
}
echo $dati4 = substr_replace($dati4, ' selected="selected">',20,1);
?>
</select>
<input type="submit" value="invia I dati" />
</p>
</form>
<div id="risultato"><?php echo '<h1>', $dati, ' anno '.'20'.substr(chunk_split($dati, 2, '/20'), 0, -3).'</h1>'; ?></div>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$( "form" ).submit(function( event ) {
var season = $( "select" ).val();
var dataString = "get_season="+season;
$.ajax({
type: "POST",
url: "<?php echo "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>",
data: dataString,
cache: false,
success: function(data)
{
var start = data.indexOf("risultato")+11;
var end = data.indexOf(decodeURIComponent("%3C%2Fdiv%3E"),start)-start;
$("select option").empty().remove();
var my_var = '<?php echo implode(',',$dati3).','.$dati;
unset($dati3,$dati4,$dati,$i); ?>'.replace(season+',','');
my_arr = my_var.split(',');
my_arr.sort(function(a,b){return b-a});
$.each(my_arr, function(key, value) {
$("select")
.append($(decodeURIComponent("%3Coption%3E%3C%2Foption%3E"))
.attr("value",key)
.text('20'+value.substr(0,2)+'/20'+value.substr(2,2)));
});
$("#risultato").html(data.substr(start,end)).show();
}
});
event.preventDefault();
});
</script>
pagina.php
Codice PHP:
<?php
// Dati
$dati3[0] = 1617;
$dati3[1] = 1516;
$dati3[2] = 1415;
//Valid post
$i = 0;
while($i <= count($dati3)-1){
if(!empty($_POST['get_season']) && (int)$_POST['get_season'] == $dati3[$i]){
$dati = (int)$_POST['get_season'];
$j = $i;
break;
}
$i++;
}
include 'session_start.php';
if(!empty($_POST['get_season'])){
$j = '';
unset($_POST['get_season'], $j);
}
if(!empty($_COOKIE['season'])){
$dati2 = '';
unset($_COOKIE['season'], $dati2);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Classifica</title>
</head>
<body>
<?php
include 'set_season.php';
?>
</body>
</html>