为什么我的str_getcsv不再起作用 - 或者是其他什么?

时间:2014-10-02 18:14:11

标签: php

我遇到了问题,并且一直在寻找4天的答案 - 主要是在谷歌上,但已经碰壁了。

有人可以帮忙吗?请。

这是背景:

我的所有网页都是.php文件。

我邀请访问者使用网页上的表单给我一个别名和电子邮件地址。

我将别名和电子邮件存储在我服务器上的.txt文件中。

我不希望电子邮件是纯文本,但我不是在寻找一个聪明的加密例程 - 我没有其他关于访问者的信息。

我的快速简便的解决方案是使用PHP二进制NOT运算符(〜)交换每个字符中的每个位。

因此:$ code =〜$ email导致“abc”被编码(十六进制)从61 62 63到9E 9D 9C

以下是我如何写和阅读.txt文件:

我使用表单从访问者那里获取“别名”和“电子邮件”,我将其“发布”到“savethisperson.php”。 在“savethisperson.php”中,我使用以下代码 -

CODE SNIPPET 1

  $fd = fopen("persondata.txt", "a");    
  fwrite($fd, $_POST['alias'] . ",");    
  fwrite($fd, ~$_POST['email']);        // note the encryption of the string using ~    
  fwrite($fd, "\r\n");    
  fclose($fd);

您将注意到,这会为每个访问者创建一行,并在行中用逗号分隔两个字符串。

我现在想列出“persondata.txt”文件中的每一行,显示加密代码 -

CODE SNIPPET 2

  $members = file("persondata.txt");   // Creates an array called "members" with one line in each element of the array.    
  foreach ($members as $nxtline)       // Creates variable called "nxtline" for each element in turn    
  {     
    echo $nxtline, "<br>";    
  }

我现在要列出“persondata.txt”文件中的每一行,取消加密电子邮件地址 -

CODE SNIPPET 3

  $members = file("persondata.txt");   // Creates an array called "members" with one line in each element of the array.    
  foreach ($members as $nxtline)       // Creates variable called "nxtline" for each element in turn    
  { $data = str_getcsv($nxtline);      // Creates an array called "data" for each string separated by a comma.    
    echo $data[0]), "," ~$data[1], "<br>";  // Note the un-encryption of data[1] using ~    
  }

这是我的问题吗?

我更改了服务器提供程序,上面的一些代码已停止工作。

我的旧提供商提供了PHP版本5.4。一切正常。

我的本​​地(在我自己的机器上)测试服务器使用PHP 5.3.8。一切正常。

我的新提供商提供PHP 5.3.2-1ubuntu4.27,我遇到了问题:

代码段1有效。

代码段2有效。

代码段3失败。所以我假设“str_getcsv”函数在(Hex)8 *和9 *范围内的代码失败。但是为什么它会在我的测试服务器上运行之前仍然有效?

也许我的假设是错误的,并且还有其他一些原因导致代码段3停止工作。

如果重要 - 所有服务器都使用Apache 2.0处理程序。

请不要告诉我改变加密方法。

0 个答案:

没有答案