2016-08-16 7 views
0
$('.folder').on('contextmenu', function(ev){ 
    ev.preventDefault(); 
    var a = $(this).attr('data-id'); 
    var b = $(this).text(); 
    $('.marked').removeClass('marked'); 
    var c = $('#path').html(); 
    var d = '<span class="spant" data-id=' + a + '>' + b + '</span>'; 
    var e = c + d; 
    $.ajax({ 
     url: 'params.php', 
     type: 'post', 
     data: { 
      'path': e, 
      'par': a 
      }, 
     success: function() { 
      location.reload(); 
     } 
    }); 

}); 

params.phpÄnderung PHP Session-Variablen mit Ajax

session_start(); 
if(isset($_POST['path'])) { 
    $_SESSION['path'] = $_POST['path']; 
} 
else{ 
    $_SESSION['path'] = '<span class="spant" data-id=0>HOME</span>'; 
} 

if(isset($_POST['par'])) { 
    $_SESSION['par'] = $_POST['par']; 
} 
else{ 
    $_SESSION['par'] = 0; 
} 

admin.php

<?php 
include ("params.php"); 
echo $_SESSION['path']; 
echo $_SESSION['par']; 
?> 

Ergebnis Echo ist alte Werte, wie $_POST Variablen nicht gesetzt sind.
Wie kann ich neue Werte erhalten, in JavaScript-Code gesetzt?

+0

Achten Sie auf eine mögliche Pfad Traversal Schwachstelle in "$ _SESSION ['Pfad'] = $ _POST ['Pfad']". Für einen Blick auf http://stackoverflow.com/questions/4205141/preventing-directory-traversal-in-php-but-allowing-paths/4205278#4205278 – swordsecurity

Antwort

1

Sie haben einen Fehler in der Anforderung, zu verwenden: method: "post" statt type: "post", also kein Wunder, dass die die Post var nicht gesetzt :)

$('.folder').on('contextmenu', function(ev){ 
    ev.preventDefault(); 
    var a = $(this).attr('data-id'); 
    var b = $(this).text(); 
    $('.marked').removeClass('marked'); 
    var c = $('#path').html(); 
    var d = '<span class="spant" data-id=' + a + '>' + b + '</span>'; 
    var e = c + d; 
    $.ajax({ 
     url: 'params.php', 
     method: 'POST', 
     data: { 
      'path': e, 
      'par': a 
      }, 
     success: function() { 
      location.reload(); 
     } 
    }); 

}); 

hoffe, dies wird es beheben;)

Prost !

0

Wenn Sie params.php einschließen, setzt es die Werte zurück auf die else Bedingungen in Ihren zwei if Blöcken.

+0

Ich habe versucht, Ajax-Code zu admin.php und verschieben ' if' code von 'params.php' nach' admin.php' - das gleiche Ergebnis. – bonaca

+0

Haben Sie $ _POST eingeloggt, um zu sehen, was drin ist? Vielleicht rufst du session_start() auch direkt in der admin.php auf (anstatt params.php einzuschließen), um sicherzugehen, dass es nicht dieser Code ist? Im Moment, wenn admin.php alle ohne $ _POST Werte aufgerufen wird, wird es zu Ihren 'else' Werten zurückkehren. – Colin