我如何阅读一个特定的文件行使用给予唯一的ID不是行号
问题描述:
我试图根据选定的消息删除用户聊天,但我不知道如何阅读行,而不使用行号,因为我用PHP文件存储聊天对话的安全性,我还在每个包含聊天的PHP文件的第一行添加了一个php代码,以防止直接访问。我如何阅读一个特定的文件行使用给予唯一的ID不是行号
我有一个文件名conversation.php
lineid | user | message | deleted
---------|------|---------|-----------
100 | joe | HI | NO
101 | pee | Hello | NO
103 | kik | Hmm | NO
这里是我的代码
<?php
if(isset($_POST['deletechatroomid']) && isset($_POST['messageline'])){
$chatsession = xss_protextion("char", $_POST['deletechatroomid']); /*Chat Path ID*/
$messageline = xss_protextion("int", $_POST['messageline']); /*Chat Line ID*/
$filePathname = dirname(__FILE__).'/chatlogs/'.$chatsession.'/conversation.php'; /*FULL FILE PATH*/
/*
I know that i i can identify the line number below code will get it for me but i don't want to use it because the it might delete another chat if mistak line id
$getDeleteLine = file($filePathname);
echo $getDeleteLine[67];
*/
}
?>
我可以将我使用每个聊天行的唯一ID只读行?
答
是的,你必须处理整个文件来检索你正在寻找的ID。
唯一的其他解决方案将是一些外部存储,它可以给你从id的行号。这将在数据库领域被称为索引,在上面的评论中@Patrick Q的建议在你的案例中有很多意义:对于你的用例,最好使用数据库而不是文本文件。 SQLite是一个轻量级的,试试吧。
看起来像是比文本文件更适合数据库的东西 –
@PatrickQ是的我知道这将是容易做在数据库中,我仍然可以改变使用数据库,请请告诉我共享主机有最大记录存储每个数据库表?并使用数据库更快? – Peter
您当然必须通过所有行,并将行ID与您正在查找的值进行比较,直到找到它(或行数不齐)。是的,因为您决定自己实施存储解决方案,所以您会现在必须自己实现许多功能一个数据库已经在船上。 – CBroe