php文件\u放入\u内容,不写入字节

php文件\u放入\u内容,不写入字节,php,file,Php,File,我有我的文件php文件把内容这样 file_put_contents($file, $data . "\n", FILE_APPEND|LOCK_EX); 当它写入我的文件test.txt时,输出是写入文件的字节数 a:4:{s:4:“姓名”;s:4:“aaaa”;s:5:“电子邮件”;s:10:“aaa@gmx.de“s:7:”消息“s:27:”mm“s:8:”日期时间“s:22:”2018年10月11日05:20:35” 我希望它只写没有字节数的数据,请任何人帮助我,谢谢 我的代码 <

我有我的文件php文件把内容这样

file_put_contents($file, $data . "\n", FILE_APPEND|LOCK_EX);
当它写入我的文件test.txt时,输出是写入文件的字节数

a:4:{s:4:“姓名”;s:4:“aaaa”;s:5:“电子邮件”;s:10:“aaa@gmx.de“s:7:”消息“s:27:”mm“s:8:”日期时间“s:22:”2018年10月11日05:20:35”

我希望它只写没有字节数的数据,请任何人帮助我,谢谢

我的代码

<?php

header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Berlin');
error_reporting(E_ALL);


class ClassProveContakt3 
{

  private $Name;
  private $Email;
  private $Message;
  private $PostOK;
  private $DateTime;
  private $items; 


   function __construct() 
   {


      $this -> DateTime = date('m/d/Y h:i:s a');  
      $this -> items = ['Name', 'Email', 'Message']; 

      $flag = true;
      foreach ( $this -> items as $key ) {  
                   if ( empty ( $_POST[$key] ) )  {
                     $flag = false;    
                   } else {    
                     $this -> $key = trim( filter_var( $_POST[$key], FILTER_SANITIZE_STRING ) );
                    }    
       }         
     $this -> PostOk = $flag; 
 }





 function ShowForm() 
 {
 ?>
   <form method="POST">
     <label for="name">Name </label>
     <input type="text" id="name" name="Name" value="<?= $this->Name ?>">
     <label for="email">E-mail </label>
     <input type="email" id="email" name="Email" value="<?= $this->Email     

      ?>">
     <br><br>
     <label> Message: <br>
       <textarea cols="45" rows="6" name="Message"><?= $this->Message ?></textarea>      
     </label>
     <br><br>
     <input  type="submit" name="post" value="POST COMMENT" id="comment">
   </form>
 <?php
 }




 function PostOkT() 
 {

   if ($this -> PostOK) 
   {
      return;

   }     
   if (empty($this->Name) ||  empty($this->Email) || empty($this->Message))
   {

     echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";  


   } 
   else 
   {

        $file = "test.txt"; 

        $datetime = date('m/d/Y h:i:s a', time());
        $data = array("name" => $this->Name, "email" => $this->Email, "message" => $this->Message, "datetime" => $datetime);           


        $data = serialize($data);
        file_put_contents($file, $data . "\n", FILE_APPEND|LOCK_EX);

        $messages = file($file);

        foreach ($messages as $value) {
            $data = unserialize($value);


                 echo "<br>"

                       . "<b>From: </b>" . htmlspecialchars( $data["name"])
                       . "<b> at: </b>" . htmlspecialchars( $data["datetime"])
                       . "<br><br>" . htmlspecialchars( $data["email"])                                     
                       . "<br><br>" . htmlspecialchars( $data["message"])
                       . "<br><hr>";

                   }

                }




    }

}       

?>

名称

@Nigel Ren,我必须按照你说的做…使用json,我必须尝试不使用Json,但因为我对PHP非常陌生,我不知道该怎么做

也许我问题的标题,php文件\u put\u没有写入字节的内容不是最好的…因为这不是我字节数的责任,而是序列化函数。也许最好的标题应该是,PHP-如何显示返回值而不使用字节数和Json

因为我的代码中有一个数组

$data = array("name" => $this->Name, "email" => $this->Email, "message" => $this->Message, "datetime" => $datetime);
应该使用函数序列化,因此我接收字节数的输出

序列化函数

PHP数组、对象或其他复杂数据结构不能在运行的PHP脚本之外传输、存储或以其他方式使用。如果您想将如此复杂的数据结构保持在脚本的一次运行之外,则需要对其进行序列化。这只是意味着将结构放入一个“较低的公分母”中,可以由PHP以外的东西处理,比如数据库、文本文件、套接字。标准的PHP函数serialize只是一种表达这种东西的格式,它将数据结构序列化为PHP特有的字符串表示形式,并且可以使用unserialize将其反转为PHP对象。不过还有很多其他格式,比如JSON或XML

来自(第一个答案)

因此,因为我不会收到返回值和字节数,而且我不知道只使用PHP,所以我使用Json。在我的代码中,我有only来更改else语句,代码的其余部分保持不变

else 
{

      $file = "test.txt"; 

      $datetime = date('m/d/Y h:i:s a', time());
      $data = array("name" => $this->Name, "email" => $this->Email, "message" => $this->Message, "datetime" => $datetime);


      $data = json_encode($data);
      file_put_contents($file, $data . "\n", FILE_APPEND|LOCK_EX);


      $messages = file($file);

      foreach ($messages as $value) {
           $data = json_decode($value, true);


                  echo "<br>"

                             . "<b>From: </b>" . htmlspecialchars( $data["name"])
                             . "<b> at: </b>" . htmlspecialchars( $data["datetime"])
                             . "<br><br>" . htmlspecialchars( $data["email"])                                     
                             . "<br><br>" . htmlspecialchars( $data["message"])
                             . "<br><hr>";

      }

}
else
{
$file=“test.txt”;
$datetime=date('m/d/Y h:i:sa',time());
$data=array(“名称”=>$this->name,“电子邮件”=>$this->email,“消息”=>$this->message,“日期时间”=>$datetime);
$data=json_encode($data);
文件内容($file,$data.\n),文件附加(LOCK_EX);
$messages=文件($file);
foreach($value形式的消息){
$data=json_decode($value,true);
回声“
” “From:”.htmlspecialchars($data[“name”])) “在:”.htmlspecialchars($data[“datetime”])) .htmlspecialchars($data[“email”]) .htmlspecialchars($data[“message”]) .“

”; } }
现在从我的文件test.txt获得我的输出

{“姓名”:“aaaa”,“电子邮件”:aaa@gmx.de“,”消息“:”mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm


你在输出什么?你在哪里输出?文件是否真的写入?输出到我的$file=“test.txt”;这个文件真的写了吗?是的,你尝试过将数据保存为Json而不是Json,但我会用php编写所有代码。。。