2016-06-30 9 views
-1

こんにちは、私はユーザーのドキュメントデータの基本的なデータベースを保持するために使用しているシンプルなシステムを持っています。私はこれが従来の方法ではないことを知っていますが、うまくいくかどうかを見たいと思っていました。ここまでは順調ですね。しかし、私のサイトでは、ページがロードされたときにifコマンドをトリガーする正しいステートメントとして自分のエコータグ内のデータを出力しているのに何らかの理由でテキスト文書の情報が変更されないという問題がありました。誰でも私がここで何が欠けているのか知っていますか?テキスト文書ファイルシステムを使用して、操作が機能していないことを確認しますか?

<?php 
ob_clean();session_start(); 

if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] == false) { 
header("Location: index.php"); 
} 

if (isset($_GET['Username'])){ 
    $Username = $_GET['Username']; 
} 

$myFile=fopen("USERS/".$Username."/NoOfDocuments.txt","r") or exit("Can't open file!"); 
$NoOfDocs = fgets($myFile); 
fclose($myFile); 

$myFile=fopen("USERS/".$Username."/RiskAssessment/Subscribed.txt","r") or exit("Can't open file!"); 
$Subscribed = fgets($myFile); 
fclose($myFile); 

$myFile=fopen("USERS/".$Username."/DOC1/Name.txt","r") or exit("Can't open file!"); 
$DocName = fgets($myFile); 
fclose($myFile); 

$myFile=fopen("USERS/".$Username."/DOC1/URL.txt","r") or exit("Can't open file!"); 
$DocURL = fgets($myFile); 
fclose($myFile); 

if ($Subscribed == false){ 
    if ($NoOfDocs == 0){ 
     $myFile=fopen("USERS/".$Username."/NoOfDocuments.txt","w") or exit("Can’t open file!"); 
     fwrite($myFile, ($NoOfDocs +1)); 
     fclose($myFile); 

     $myFile=fopen("USERS/".$Username."/DOC1/Name.txt","w") or exit("Can’t open file!"); 
     fwrite($myFile, 'Risk Assessment'); 
     fclose($myFile); 

     $myFile=fopen("USERS/".$Username."/DOC1/URL.txt","w") or exit("Can’t open file!"); 
     fwrite($myFile, 'RiskAssessment.php'); 
     fclose($myFile); 

     $myFile=fopen("USERS/".$Username."/RiskAssessment/Subscribed.txt","w") or exit("Can’t open file!"); 
     fwrite($myFile, 'true'); 
     fclose($myFile); 
    }  
} 

echo 'Logged in as = '.$Username.'<br>'; 
echo 'Document Subscribed = '.$Subscribed.'<br>'; 
echo 'Number of Documents Subscribed to = '.$NoOfDocs.'<br>'; 
echo 'This Document is Called = '.$DocName.'<br>'; 
echo 'This Document is Located at = '.$DocURL.'<br>'; 

?> 

EDIT 1.0

はこれが要求されるように私のエコータグによって出力される情報である。

Logged in as = Matt 
Document Subscribed = false 
Number of Documents Subscribed to = 0 
This Document is Called = DOC1-NAME 
This Document is Located at = DOC1-URL 

EDIT Barmarメソッドを使用して1.1

、まだ取得します同じ結果:

<?php 
ob_clean();session_start(); 

if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] == false) { 
header("Location: index.php"); 
} 

if (isset($_GET['Username'])){ 
    $Username = $_GET['Username']; 
} 

$NoOfDocs = file_get_contents("USERS/".$Username."/NoOfDocuments.txt") or exit("Can't read file!"); 
$Subscribed = file_get_contents("USERS/".$Username."/RiskAssessment/Subscribed.txt") or exit("Can't read file!"); 

if ($Subscribed == 'false'){ 
    if ($NoOfDocs == 0){  
     file_put_contents("USERS/".$Username."/NoOfDocuments.txt", ($NoOfDocs +1)) or exit("Can't write file!"); 
     file_put_contents("USERS/".$Username."/DOC1/Name.txt", "Risk Assessment") or exit("Can't write file!"); 
     file_put_contents("USERS/".$Username."/DOC1/URL.txt", "RiskAssessment.php") or exit("Can't write file!"); 
     file_put_contents("USERS/".$Username."/RiskAssessment/Subscribed.txt", "true") or exit("Can't write file!"); 
    }  
} 
?> 
+0

FYIでは、関数 'file_get_contents'と' file_put_contents'を参照してください。あなたの 'fopen'、' fgets/fwrite'、 'fclose'が1回の呼び出しで何をしますか? – Barmar

+0

'echo'文の出力を質問に追加してください。 – Barmar

+0

@Barmarここを手伝ってくれてありがとう、エコーが出力する情報を投稿に編集しました。 –

答えて

1

$Subscribedはブール値ではなく、文字列です。 fgets()は、エラー(たとえばファイルの終わりなど)が発生した場合はブール値falseを返します。それは次のようになります。

また
if ($Subscribed == 'false') { 

、ファイルが行の末尾に改行を持っている場合、これらはfgets()によって返されます。あなたはこれを切り落とす必要があります。

if (trim($Subscribed) == 'false') { 

ところで、これらのファイルは1行だけを持っているので、あなたがワンステップでそれを読むためにfile_get_contentsを使用することができます。

$Subscribed = file_get_contents("USERS/".$Username."/RiskAssessment/Subscribed.txt") or exit("Can't read file!"); 

、その後で外に戻ってそれを記述します。

file_put_contents("USERS/".$Username."/RiskAssessment/Subscribed.txt", "true") or exit("Can't write file!"); 
+0

途中で助けてくれてありがとう、私は2回目の編集をしましたが、それはまだ同じ結果を出力しているように私はあなたが示唆した方法に正しく変更されていないように見えますか? –

+0

'var_dump($ Subscribed)'とは何ですか? – Barmar

+0

何も出力が全くありません。 –

関連する問題