2014-11-02 60 views
0

我有问题写入文件VarLog.txt,它不是只读的(在属性中),我试图写变量或SQL查询作为字符串在日志文件中我创建了,我也写了一个检查,看看VarLog是否存在,如果不存在,那就制作它。下面的代码问题与fopen和fwrite PHP

if (!file_exists("VarLog.txt")) { 
    $fh = fopen("VarLog.txt", 'w') or die("can't open file"); 
    fclose($fh); 
} 
function anti_injection($sql) { 
    $fp = fopen("VarLog.txt", "a+"); 
    $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql); 
    $sql = trim($sql); 
    $sql = strip_tags($sql); 
    $sql = addslashes($sql); 
    fwrite($fp, "SQL Query/String: $sql"); 
    fclose($fp); 
    return $sql; 
} 

一个的$ _ POST变量

anti_injection($_POST['email']); 
+0

您能否介绍一下您遇到的问题? – 2014-11-02 22:12:12

+0

@iWizardPro - 即使当我将所有$ _POST变量都设置为'anti_injection($ _ POST ['email']);' – Zonfire 2014-11-02 22:13:38

回答

0

的代码示例本身不存在任何错误,比如果文件存在先检查等,并建立它是多余的。

  1. 删除文件VarLog.txt(如果存在以排除所有权问题)。
  2. 检查你的工作目录是什么。您的路径现在不是绝对路径,因此文件将相对于当前的工作目录进行写入(使用getcwd()找出该路径是什么,并在那里检查)。
+0

嗯......我做了'getcwd()'并获得我的wwwroot,我将它粘贴到'$ fp = fopen(“C:\ inetpub \ wwwroot \ VarLog.txt”,“a +”);' 该文件仍未创建:(@iWizardPro – Zonfire 2014-11-02 22:48:46

+0

您'$ fp = fopen(“C:\\ inetpub \\ wwwroot \\ VarLog.txt”,“a +”);' – 2014-11-02 22:50:53

+0

我试过了,仍然没有任何内容正在写入,我检查了权限并且管理员可以完全控制我的VPS,我假设PHP算作管理员?我们还使用Windows Server 2008 – Zonfire 2014-11-02 23:14:41