2016-05-22 3 views
0

に非ログインからPHPの機能を非表示にするにはどうすればよい私はウェブサイトを作成するプロセスにいるよと私は問題に来ていると私はいくつかの時間のために検索した後、それは非常に困難オンライン解決策を見つけるために探しています。私は、ユーザー

だから私のウェブサイトは、ブートストラップのフレームワークを使用して作られたとの記録がデータベースから表示して、編集したり削除したり、データベースに追加された新しいレコードを持つことができるページ数を持っています。今私は明らかに誰かが自分のウェブサイトに来て、私の記録を削除したり編集したりすることを望んでいない。だから、うまく動作するログインと登録システムを作ったのである。

しかし、問題は、私はどのように追加、編集を隠し、彼らは、ログインするまで、ユーザからボタンを削除しますか?または、データを表示するために別のページを作成する必要がありますか?

例えば私のニュースページは、次のファイルと一緒に設定されている:config.phpを。 index.php; add_news.php; edit_news; delete_news.php; read_more.php。今は、ログインしていないユーザーからadd_news.php、edit_news.php、およびdelete_news.phpを非表示にしたいと考えています。私が本当に立ち往生しているように助けてください。

<!-- Page Content --> 
<?php 

// load the configuration file. 
include("config.php"); 
    //load news from the database and then ORDER them by newsid 
    //you will notice that newlly added news will appeare first. 
    //also you can OREDER by (dtime) instaed of (news id) 
    $result = mysql_query("SELECT * FROM news ORDER BY newsid DESC",$connect); 
    //lets make a loop and get all news from the database 
    while($myrow = mysql_fetch_array($result)) 
     {//begin of loop 
      //now print the results: 
      echo "<b>Title: "; 
      echo $myrow['title']; 
      echo "</b><br>On: <i>"; 
      echo $myrow['dtime']; 
      echo "</i><hr align=left width=160>"; 
      echo $myrow['text1']; 
      // Now print the options to (Read ,Edit or Delete the news article) 
      echo "<br><a href=\"read_more.php?newsid=$myrow[newsid]\">Read More...</a> 
      if(isset($_SESSION['userid'])) { 
       <div> 
      || <a href=\"edit_news.php?newsid=$myrow[newsid]\">Edit</a> 
      || <a href=\"delete_news.php?newsid=$myrow[newsid]\">Delete</a><br><hr>"; 
       </div> 
     }//end of loop 
?> 
+0

を試してみて、正しい役割が/誰tehのユーザーと同じIDを持っていますレコードを作りました/何でも。ログイン時には、おそらくセッションにユーザーデータを追加することになるでしょう。 – JimL

答えて

0

あなたはユーザーセッションが非表示にしたいHTML要素の前に存在しているかどうかをチェックするPHP if条件を置くことができ、このように:

<? if(isset($_SESSION['userid'])) { ?> 
     <div>your html here </div> 
    <? } ?> 

最も簡単なオプションは、ユーザーがログインしている場合は、一度チェックし、彼がいない場合は、ログインページに彼をリダイレクトするようになります。

編集後に追加されたコードに応じて、PHPの範囲内のコードは次のようになります。

 if(isset($_SESSION['userid'])) 
    { 
     echo "<div>|| 
    <a href=\"edit_news.php?newsid=$myrow[newsid]\">Edit</a> 
    || <a href=\"delete_news.php?newsid=$myrow[newsid]\">Delete</a> 
    <br><hr> 
    </div>"; 
    } 
+0

こんにちは、私はこれを試して、それはある範囲で動作します。上記のコードはうまくいき、ニュースの追加ボタンを隠しますが、編集と削除のセクションでそれを使用するとページ全体が壊れます。私は今、私の質問を編集し、PHPセグメント内にある編集と削除のコードをすでに含んでいます。 –

+0

あなたは ''を削除することを忘れましたか?条件が既にPHPセグメントの中にある場合は必要ありません – AnatPort

+0

ええ、私は何をしたのかを表示するためにコードを更新しましたが、それでもindex.phpページは表示されません。そのコードを追加すると、それが破られます。他のすべてのページは機能します。 –

0

あなたはphp sessionsを使用する必要があります。削除/更新ボタンを表示する前に、ユーザーがログインしているかどうかを確認します。これはセッション変数として保存する必要があります。さらに、何かを更新しようとしているときにできることを確認するために、追加の保護レイヤーを作成する必要があります。

はとにかく私は、Webアプリケーションを構築しているフレームワークを使用することをお勧め。一度あなたがそれを取得すると、それは人生をはるかに簡単にします。さらに、ほとんどのフレームワークは、アプリケーションで使用できる機能を持つ異なるパッケージ/プラグイン/拡張機能を持っています。認証システムとして

はあなただけで認証し、ユーザーのシステムをインストールすることができ、非常に多くのアプリケーションが持っているものです。

0

ユーザーがログインしているかどうかを確認します。ユーザーがログインしているかどうかを確認するセッション変数があります。そのセッション変数が設定されているかどうかを確認するだけです。 例..

If (isset($_SESSION['user'])){ 
    // show that records 
} 
0

ジャスト場合に出力(ボタン、フォームなど)をラップし、ユーザーは/にログインしているかどうかを確認

<?php 

// load the configuration file. 
include("config.php"); 
//load news from the database and then ORDER them by newsid 
//you will notice that newlly added news will appeare first. 
//also you can OREDER by (dtime) instaed of (news id) 
$result = mysql_query("SELECT * FROM news ORDER BY newsid DESC",$connect); 
//lets make a loop and get all news from the database 
while($myrow = mysql_fetch_array($result)) 
    {//begin of loop 
     //now print the results: 
     echo "<b>Title: "; 
     echo $myrow['title']; 
     echo "</b><br>On: <i>"; 
     echo $myrow['dtime']; 
     echo "</i><hr align=left width=160>"; 
     echo $myrow['text1']; 
     // Now print the options to (Read ,Edit or Delete the news article) 
    if(isset($_SESSION['user_id'])){ 
      echo "<br><a href=\"read_more.php?newsid=$myrow[newsid]\">Read More...</a> 
     || <a href=\"edit_news.php?newsid=$myrow[newsid]\">Edit</a> 
     || <a href=\"delete_news.php?newsid=$myrow[newsid]\">Delete</a><br><hr>"; 
    }//if session 
    }//end of loop 
?> 
+0

お返事ありがとうございます。私はあなたがread_more.phpをインクルードしていることに気づいたが、ログインしていなくてもユーザがそれを見て使いたいと思っている。 –

関連する問題