使用AJAX和php将内容保存到文件

问题描述:

您好,非常感谢。 我搞乱了下面的代码,喜欢年龄,并没有得到它的工作。实际上,整个代码只应该将DIV写入服务器上的某个文件并为该文件命名。看起来很容易 - 但实际上并不像我意识到的那样。使用AJAX和php将内容保存到文件

这里是我到目前为止的代码:

HTML/PHP

<div id="data2save"> 
<table width="80%" border="1px" cellpadding="0" cellspacing="0" style="float:left" > 
<tbody> 
    <tr> 
    <td style="border-top:1px solid #000;border-left:1px solid #000;border-bottom:1px solid #000;">07:00 - 08:00</td> 
    <td bgcolor="#99CC00" value="1">&nbsp;</td> 
    <td bgcolor="#99CC00" value="2">&nbsp;</td> 
    <td bgcolor="#99CC00" value="3">&nbsp;</td> 
    </tr> 
</tbody> 
</table> 
</div> 
<br> 
<input type="button" value="save" id="save"> 

<?php 
$userid = 10; 
$kalenderwoche = date('W', time()); 
sprintf("%02d",$kalenderwoche); 
$jahr = date('Y', time()); 
?> 

AJAX:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> 

<script> 

$("#save").live("click",function() { 

var userid = "<?php echo $userid ?>"; 
var kalenderwoche = "<?php echo $kalenderwoche ?>"; 
var jahr = "<?php echo $jahr ?>"; 

var bufferId =$("#data2save").html(); 

     $.ajax({ 
      type : "POST", 
      url : "saver2.php", 
      data: {user_ID: userid , kw: kalenderwoche , jj : jahr , id : bufferId}, 
      dataType: "html", 
      success: function(data){ 
      alert("ok"); 
      } 
      }); 
}); 
</script> 

和处理数据,保存它的PHP文件到一个文件,似乎包含错误。

saver2.php:

<?php 

$kalenderwoche = $_POST['kw']; 
$userid = $_POST['user_ID']; 
$jahr = $_POST['jj']; 
$data = $_POST['id']; 

if (!file_exists($userid.'/')) {   
mkdir($userid.'/', 0755, true); 
} 

$copyname = $userid. '/' .$userid. '_' .$jahr. '_' .$kalenderwoche. '.html'; 

$handle = fopen($copyname , 'w+'); 

if($handle) 
{ 

if(!fwrite($handle, $data)) 
echo "ok"; 
} 


?> 

好了,这就是全部。我希望任何人都尖锐眼睛,因为我没有发现问题。谢谢

不应该先关闭文件吗?另外,fwrite在错误或文件长度的情况下返回false。 所以!fwrite()如果写入了某些内容(或0),则返回false。

<?php 

$kalenderwoche = $_POST['kw']; 
$userid = $_POST['user_ID']; 
$jahr = $_POST['jj']; 
$data = $_POST['id']; 

if (!file_exists($userid.'/')) {   
mkdir($userid.'/', 0755, true); 
} 

$copyname = $userid. '/' .$userid. '_' .$jahr. '_' .$kalenderwoche. '.html'; 

$handle = fopen($copyname , 'w+'); 

if($handle) 
{ 

if(fwrite($handle, $data)) 
echo "ok"; 
} 

fclose($handle); 

?> 

此外,我希望你不会将代码提取到生产服务器,因为它充满了安全漏洞。

+0

flbs在这种情况下无关紧要,因为它会被垃圾收集:http://*.com/questions/12143343/does-php-close-the-file-after-the-file-handler-is - 垃圾收集 – bcmcfc 2014-10-04 09:25:31

+0

fclose没有影响我意识到。不用担心,我不会使用该代码来处理任何敏感数据。它只是供私人使用。但它会很好,如果它的工作:) – thevibe 2014-10-04 09:52:31

+0

!如果操作成功,fwrite返回false,我没有得到“ok”消息的逻辑。所以你的错误在哪里?它是否会在$ .ajax中获得成功消息? – 2014-10-04 09:54:52