2017-10-18 8 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が見つかるまで(または行がなくなるまで)、行IDを探している値と比較する必要があります。はい、自分でストレージソリューションを実装することを決定したため今すぐあなた自身の多くの機能を実装する必要がありますデータベースは既に搭載されています。 – CBroe

答えて

0

はい、探しているIDを取得するためにファイル全体を処理する必要があります。

唯一の解決策は、IDから行番号を得ることができる外部ストレージです。これはデータベース世界ではインデックスと呼ばれ、上記のコメントの中で@Patrick Qの提案はあなたのケースでは非常に意味があります:あなたのユースケースのテキストファイルよりもデータベースをうまく使いましょう。 SQLiteは軽量なもので、試してみてください。

関連する問題