【问题标题】:My fopen function works, but the fwrite function doesn't我的 fopen 函数有效,但 fwrite 函数无效
【发布时间】:2023-03-16 06:25:01
【问题描述】:

因此,每当用户提交注册并成功进入激活阶段时,我都会尝试创建一个文件并将代码写入该文件。我这样做是为了可以将注册 php 文件中的所有变量和信息存储到我创建的文件中。这是注册表单的相关代码:

#$file is set in removed code
$filename = '../' . $file;
fopen($filename, "w") or die("<h1 style='text-align: center; color: red;'>There has been an error creating your user files. Try again later.</h1>");
$content = "
<?php

potato

?>
";
fwrite($filename,  $content);

一切正常,除了fwrite() 函数。我查看了我创建的文件,其中没有任何内容。怎么回事?

【问题讨论】:

  • 也许你可以想出一个更简单的例子来说明这个问题?
  • fopen() 函数返回一个文件句柄(成功时),您使用该文件句柄作为fwrite() 中的参数,而不是文件名字符串
  • 所以 O'ConnorO'Brien 根据您的规则将是无效的姓氏,您正在限制您的用户群以避免很多爱尔兰人?
  • @MarkBaker 不,我只是不想在第一个、最后一个或你的用户名中出现特殊字符。不过,我应该删除撇号,感谢您指出这一点。
  • 删除了所有(或至少大部分)无关代码

标签: php file fopen fwrite


【解决方案1】:

fopen() 返回绑定到$filename 的流资源。当您调用fwrite() 时,它采用的第一个参数是fopen() 返回的resource不是文件名。

因此将程序的相关部分更改为:

$handle = fopen($filename, "w") or die("...");
$content = "foobar";
fwrite($handle,  $content);
fclose($handle); // Don't forget to close when you're done.

【讨论】:

  • 非常感谢您的出色回答,它解决了我的问题!再问一个问题。如何将注册表单中的变量存储到我创建的文件中?
  • 您想将注册表单中的变量存储到文件中?为什么?你在用文件做什么?您希望文件采用什么格式?在不确切知道您的目标是什么的情况下,也许您可​​以使用 CSV 之类的格式 - 您将为每条记录在同一个文件中写入一个新行。要执行此类操作,您必须打开文件以进行附加 (fopen($filename, "a"))。然后,使 $content 包含一个 csv 行:$content = "$first, $last, ...\n";
  • 好吧,因为我散列了我的 cookie,使用 SQL 查询检索用户信息非常困难,所以我只想将信息存储在数据库和文件中。另外,我想出了如何存储用户的信息,谢谢你的建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多