2

リンクがクリックされたときにテーブル「ptb_permissions」で更新する列「特権」(スペルが間違っていることは知っています)を取得しようとしています。

基本的に、私は以前に他の多くのことのためにこれを行ったことがありますが、うまく機能しましたが、これは何らかの理由で機能していません。

ユーザーが自分の写真を表示する要求を送信すると、受信トレイでユーザーに通知されます。ユーザーには、リクエストを承認するためのリンクと、リクエストを削除するためのリンクが 2 つあります。

承認をクリックすると、列挙列の「権限」が 0 から 1 に更新されます。

これは機能していません。エラーが発生していないだけで、何も起きていません。どこが間違っているのか誰か教えてください。

<a href="includes/approve_priv_pix.php?pix=<?php echo $pix['user_id']; ?>">Yes this is ok</a>

approval_priv_pix.php の内容;

<?php
require_once("session.php"); 
require_once("functions.php");
require('_config/connection.php');
approve_pix ($_GET['picture'], $_SESSION['user_id']);
header("Location: {$_SERVER['HTTP_REFERER']}");
?>

mysql 関数:

function approve_pix($picture, $user) {
                        global $connection;
            global $_SESSION;
                        $query = "UPDATE ptb_permissions
                                    SET privellages='1'
                                    WHERE id=$picture 
                                    AND to_user_id=$user";
            mysql_query($query, $connection);
                }
4

2 に答える 2

0

$_GET['picture']する必要があります$_GET['pix']

また、privellages列の列挙値を再確認してください。

于 2013-02-12T18:16:37.027 に答える
0
<a href="includes/approve_priv_pix.php?pix=<?php echo $pix['user_id']; ?>">Yes this is ok</a>

ここにpixキーがありますが、approve_priv_pix.phpではから写真IDを取得しています$_GET['picture']。また、リンクコードになぜあるのか$_GET['pix'] わからない。<?php echo $pix['user_id']; ?>おそらくそれは次のようなものでなければなりません<?php echo $pix['picture_id']; ?>

さらに、コードはSQLインジェクションに対して開かれています。ここ:

$query = "UPDATE ptb_permissions
          SET privellages='1'
          WHERE id=$picture 
          AND to_user_id=$user";

その代わりに、次のことを行う必要があります。

$query = "UPDATE ptb_permissions
          SET privellages='1'
          WHERE id=" .mysql_real_escape_string($picture) . "
          AND to_user_id=" .mysql_real_escape_string($user);

についての詳細mysql_real_escape_string。そのページの上部にある警告メッセージを見てください。mysql拡張機能は非推奨であり、まもなく削除されます。新しいプロジェクトの場合は、PDOまたはMySQLi拡張機能を使用することをお勧めします。

別の注意: global $_SESSION;まったく必要ありません。デフォルトでは、PHPのどこからでもアクセスできます。

エラーが発生しないim何も起こらないim

すべてのエラーを表示するにはerror_reporting、E_ALLに設定する必要があります(iniファイルまたはコードで直接)。このオプションを有効にすると、すべての通知/警告/エラーが表示されます。

于 2013-02-12T18:16:58.103 に答える