2011-05-31 31 views
0

削除ステータス機能を追加する際に助けが必要です。削除ボタンが適切な場所にあり、delete.phpページにユーザのコメントがデータベースから削除され、ユーザフィードから削除される必要があるかどうかを知る必要があります。ステータス削除機能ガイダンスが必要

これはかなり簡単だと聞きました。しかし、私はちょうど私が実際にやったことがない、その周りに私の頭を得ることができません。だから、私はちょうどユーザーがXとポップアップをdelete.phpにリンクするようにしたいと思うし、ユーザーが削除することが認められればストリームと明らかにデータベースの両方からそのコメントを削除する。ここで

は今、あなたのスクリプトが何かを彼らは確認を打つ場合は、「delete.php」のページにユーザーをリダイレクトしていない私のSTREAMFULL.PHP

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
<script type="text/javascript"> 
               function show_confirm() 
               { 
               var r=confirm("are you sure you want to delete?"); 
               if (r==true) 
                { 
                window.location="http://www.fightstar.org/raw/sn-extend/theme/default/delete.php'"; 
                } 
               else 
                { 
                alert("You pressed Cancel!"); 
                } 
               } 
               </script>' 

<style> 

<?php 


      while($streamitem_data = mysql_fetch_array($chant)){ 
       echo "<div class='stream_object'>"; 
       echo "<table style='word-wrap: break-word;'><td valign='top' style='word-wrap: break-word;padding:5px;'>"; 
       echo "<img class='stream_profileimage' style='border:none;padding:0px;' src='";sn_user_core::output_profile_image_url($streamitem_data['streamitem_creator']);echo "' onerror='this.src=\"sn-admin/css/img/no_profile_img.jpeg\";'><td valign=top>"; 
        $poster_name = sn_user_core::getuser($streamitem_data['streamitem_creator']); 
        $target_name = sn_user_core::getuser($streamitem_data['streamitem_target']); 
        $cont = stripslashes($streamitem_data['streamitem_content']); 

        if(!($streamitem_data['streamitem_type_id']==2)){ 
        $cont = htmlentities($cont); 
        $cont = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a class='user_link' href=\"\\0\">\\0</a>", $cont); 

        } 

        if($streamitem_data['streamitem_creator']==$streamitem_data['streamitem_target']){ 
         echo "<a href='sn-profile.php?uid=".$poster_name['id']."'>" . $poster_name['firstname']." ".$poster_name['lastname'] ."</a>"; 
        }else{ 
         echo "<a href='sn-profile.php?uid=".$poster_name['id']."'>" .$poster_name['firstname']." ".$poster_name['lastname'] ." </a> 
         > 
           <a href='sn-profile.php?uid=".$target_name['id']."'>" .$target_name['firstname']." ".$target_name['lastname'] ."</a>"; 
        } 

        if($streamitem_data['streamitem_type_id']==2){ 
        $cont = nl2br($cont); 
        echo "<div style='display:inline;'> ".$cont." </div>"; 
        }else{ 

         if($streamitem_data['streamitem_creator']==$streamitem_data['streamitem_target']){ 
         $cont = nl2br($cont); 
          echo "<div>".$cont."</div>"; 
         }else{ 
         $cont = nl2br($cont); 
         echo "<div>".$cont."</div>"; 
         } 

        } 
       echo "<div class='post_contextoptions'>"; 

           echo "<div class='stream_option'>".Agotime($streamitem_data['streamitem_timestamp']); 
            if(!($streamitem_data['streamitem_viaid']==0)){ 


        //COMMENTS 

         echo '<a href="" onclick="show_confirm()" alt="Delete" title="Delete" class="delete">X</a>&nbsp;&nbsp;&nbsp;&nbsp;'; 
      } 

答えて

1

です。削除ボタンをクリックしたコメントを表示するには、何らかの識別子を埋め込む必要があります。それでURLはhttp://example.com/delete.php?commentID=123のようになります。削除スクリプトは、コメントIDを取得して、それが何をしていようとします。

それは私が行っている限りです。あなたがしようとしていることを理解するためにあなたのコードの壁をたどって読むつもりはありません。コードを表示するのはいつでも歓迎ですが、それはあまりにも大変です。それをあなたがしようとしているものの代表的なサンプルに蒸留してください。我々は完全な戦争ではなく、クリフのノートバージョンが欲しい。&平和。

+0

Ok Marc。しかし、私がcommentID = 123を追加するだけでは、123というコメントは削除されず、ユーザーがクリックする122のコメントは表示されません。私は今、無関係な部分を切り捨てます。 –

+0

私は編集をして、JavaScriptだけでコメントにしました。 –

+0

コメントIDを動的に入力します。 123は単なる例です。 –

0

何がそんなに難しいですか?

スタートSitutation:あなたは、データベース

次にコメントがあります

  1. ユーザーは
  2. ユーザーが
  3. 私のコメントを表示するページを閲覧識別し、私のコメントのページがdisplayeで表示たとえば、クリック可能で、主キーで既にバインドされているコメントプレビューのリスト:

    HREF = somepage?comm_id = $ RES [0]> SUBSTR($ RES [1]、0.50)$ RESはMySQLと$ RESからの結果を持つ配列である/

[0 ]はプライマリキーの値、$ res [1]はコメントのプレビューです。 4.コメントがクリックされた後、あなたはまだそれのIDを持っているので、編集して新しいページにこのコメントを表示するには、このように何でもボタンを削除:$ _GETは[comm_id]以前どこから来たのか

<form .... action=delete.php> 
<input type=button name=edit value=edit> 
<input type=button name=delete value=delete> 
<input type=hidden name=comment_id value=$_GET['comm_id']> 
</form> 

ページ。 (ISSET(場合

:あなたは

  1. あなたが生きdelete.phpを持っていたら、それは次のように行くをdelete.php呼び出すための伝統的な方法やhttpリクエストを行くことを選択することができます。この時点で、

    $ _POST ['delete'])) 削除($ _ POST ['comment_id']) ...など

および削除機能は同じように書きます:いくつかの他の障害にいくつかのページを表示し、成功に

...etc 
$sql='delet...etc where `id`='.$_POST['comment_id'] 
...etc 

...もちろん

セキュリティなし、SQL攻撃防止が指定されていませんここでは、これはあなたの仕事です。それは単なる基本的なシナリオです。

可能な限り自動化された自動化、データの消去、SQLの挿入、クエリなどを常に自動化するための完璧な基盤を作りたいと思っています。

+0

Ok、Melsi、あなたは私をもっと近くに持っています、私は削除ボタンをクリックして、ブラウザのidを表示します。 これは削除ボタンです エコー '        '; 結果は です。mysite/raw/sn-extend/theme/default/delete.php?= 1503 しかし、delete.phpにナビゲートすると、コメントが見つからないと言われます。今、delet.phpページにエラーがある可能性があります。 –

+0

このような場合、常に分割して分離します。デバッグシナリオの例: – Melsi

0

サイトで行います:あなたが集中したり、問題があった場所べきところ

1.Echo the sql in the page(just for testing) 
2.Copy the id 

は、すべてあなたが知っている(heidisqlは無料です)mysqlクライアントで次の

2.Paste sql to the sql editor,click the execute button (is a blue one) 
5.after you make the sql working 100% check results 
6.1 A result is returned then ok leave the client 
6.2 A result is not returned you can view the data of the table (click data tab) copy an existing value paste it to the sql editor and now the query must return this record 

この方法を実行します。 - クエリ - 間違ったID など

多くの場合、SQLをエコーし​​て直接実行する必要がありますまだ開発中のときはクライアントから。デバッグを成功させるには、物事を個別に分離してテストする必要があります。 PHPでは、デバッグのための最も一般的でシンプルなツールは次の組み合わせです:

print_r [you see the structure of sth] 
var_dump [in addition show type of, int, str etc] 
echo [if hello is echoed this means the code reaches at certain point] 
if(true){echo 'hello';} [if hello is echoed then the condition inside if was the problem] 
echo 'hello'; exit; [you don't care for the rest you want to check up to hello] 
die('hello') [fast way for echo 'string';exit; die does not work well with int die(332)] 

注意:いくつかの基本的な対策を講じてください。 1.ログインしているユーザーは誰でも他の人のコメントを削除することができます。そのため、コメントを削除する前に、少なくとも削除するコメントがログインしたユーザーと一致することを確認してください。例えば、擬似コード: ここでコメントIDはログインユーザーIDにtrueを返します。それ以外の場合はfalseを返します。 falseの場合はfalseを削除しないでください。 2.可能であれば、PDOの方向に進み、SQLインジェクション攻撃に役立ちます。 3.できるだけ多くの人が入手可能なPHPセキュリティを検索すると、getのinstedを使用することができます。

関連する問題