2017-10-18 37 views
1

我试图根据选定的消息删除用户聊天,但我不知道如何阅读行,而不使用行号,因为我用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只读行?

+0

看起来像是比文本文件更适合数据库的东西 –

+0

@PatrickQ是的我知道这将是容易做在数据库中,我仍然可以改变使用数据库,请请告诉我共享主机有最大记录存储每个数据库表?并使用数据库更快? – Peter

+0

您当然必须通过所有行,并将行ID与您正在查找的值进行比较,直到找到它(或行数不齐)。是的,因为您决定自己实施存储解决方案,所以您会现在必须自己实现许多功能一个数据库已经在船上。 – CBroe

回答

0

是的,你必须处理整个文件来检索你正在寻找的ID。

唯一的其他解决方案将是一些外部存储,它可以给你从id的行号。这将在数​​据库领域被称为索引,在上面的评论中@Patrick Q的建议在你的案例中有很多意义:对于你的用例,最好使用数据库而不是文本文件。 SQLite是一个轻量级的,试试吧。

相关问题