【问题标题】:How do I use php so that when a user presses a specific button, they can write to a specific .txt file?如何使用 php 以便当用户按下特定按钮时,他们可以写入特定的 .txt 文件?
【发布时间】:2011-07-31 06:28:20
【问题描述】:

基本上,就像我问过的与我的 php 聊天应用程序相关的其他问题一样,我试图得到它,以便有一个文本字段,其中 $msg 通过 msg.txt 显示。两个用户可以通过这种方式与另一个用户通信。如果我想使用简单的包含函数,这将很容易。但我不想费心制作所有这些页面并将其上传到我的服务器。那么,当用户(比如说名为 Aaron)单击名为 Benjamin 的按钮并键入名为 aaronbenjamin.txt 的文件时,我该如何拥有它,如果 Aaron 想与另一个用户交谈,他可以按下名为 Chris 的按钮,然后键入一个名为 aaronchris.txt 的文件?并且全部来自同一个框和文本字段?谢谢,我很感激。

编辑:这是我的代码-

http://key-mail.zxq.net/msg.txt

【问题讨论】:

  • 首先欢迎您,您知道如何使用php创建和写入文件吗?为什么不使用数据库?
  • 是的,但是 SQL 对我不起作用,所以我使用的是 .txt。我确实知道该怎么做,但问题不在于写入数据库,而是单击同一页面上的不同按钮以使其写入不同数据库的想法。有意义吗?
  • 我对 php 有点陌生。但是,有没有类似于 OnClick 类型的东西?假设在 html 中单击特定按钮,然后使用 php 联系服务器发生特定操作?如果是这样,这种函数的基本语法是什么?
  • 我需要使用 AJAX 吗?如果是,怎么做?
  • 如果你想在没有 AJAX 的情况下这样做,请阅读我的帖子。

标签: php chat


【解决方案1】:

关于您的评论,您应该了解using forms with PHP。如果您完整阅读该教程,它应该会回答您关于表单和 php 的所有问题。

至于让它写入不同的文本文件,因为您似乎担心“上传所有这些页面”,您会很高兴知道有一个简单的解决方案!

有一个名为file_put_contents的函数,它将创建或写入文件。

由于您是 PHP 新手,这里有一个例子:

<?php

$file = 'hello.txt';
$text = 'Hello World!';

file_put_contents($file, $text);

?>

这会将$text 变量的内容放入名称存储在$file 中的文件中。

使用file_get_contents 从文件读取同样容易。

假设文件hello.txt从之前存在并且内容相同,您可以使用以下代码从文件中读取并输出其内容:

<?php

$file = 'hello.txt';

echo(file_get_contents($file));

?>

这将显示 $file 的内容。

现在,进入您问题的细节,如果您的表单设置了“to”和“from”GET 变量,其中“to”已经是您的用户名,那么以下代码会将值写入“消息”根据您提供的模式将变量获取到文件中:

<?php

$to = addslashes($_GET['to']);
$from = addslashes($_GET['from']);
$msg = addslashes($_GET['message']);
//addslashes is used as a small security measure

$file = $to . $from . '.txt';
file_put_contents($file, $msg);

?>

这会从 GET 数组中获取我们的变量,在某种程度上对其进行清理,设置文件名,并将消息写入文件。

如果您对此的特定部分有任何疑问,或者希望我更详细地介绍,请随时提问!

【讨论】:

  • 我希望这里有一个“喜欢”按钮 :)
  • 向上箭头相当于“喜欢”:-)
  • 它说我需要建立自己的声誉。我该怎么做?
  • 如果答案解决了您的问题,请按向上箭头下方的复选标记将其标记为正确答案!
  • @Matthew 别人对你自己的问题的支持是获得代表的简单方法
【解决方案2】:

这是写入文件的方法: http://php.net/manual/en/function.fopen.php

你最好还是使用数据库。

要使不同的链接做不同的事情,您可以按照您的建议使用 AJAX,也可以使用 GET 变量在 PHP 端路由函数。后者更容易,但意味着您需要在用户按下按钮后重新加载页面。

这里有一个小演示:

<a href="thispage.php?clicked=1">click here</a>

然后在php页面顶部:

 if($_GET['clicked']==1){--write to file1---}
 else if($_GET['clicked']==2){--write to file2---}

希望对你有帮助

【讨论】:

  • 不需要 fopen,这不是让简单的file_get_contents 过于复杂吗?
  • 根据我的经验,file_get_contents 经常导致权限错误,尤其是在本地服务器上工作时。这取决于特定的服务器设置。反正fopen没那么难吧?
  • file_get_contents 只是 fopen/fread 的一个方便的包装器 - 你总是会得到他们两个相同的权限错误。
  • 我还没有遇到来自 file_get_contents 的权限错误。如果它确实给出了错误,请尝试 CHMOD 0777 而不是它可能的 0644。
  • @Cyclone 危险!你要求被黑客入侵。我说的是经验!
猜你喜欢
  • 1970-01-01
  • 2017-02-11
  • 2015-03-25
  • 1970-01-01
  • 2018-01-07
  • 2022-01-15
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多