2

私は実際のウェブサイトにヒットカウンターを追加して、オファーをノーで注文できるようにしました。のヒット。エラーは発生しませんが、データベースが希望どおりに更新されていません。理由はわかりますが、問題を解決できないようです。

これが、データベースにオファーを追加する方法です。

if  (isset($_POST['add'])) 
{       
    require_once("mysql_connect.php");
    $id=uniqid();
    $email=$_SESSION['email'];
    $denumire_locatie=$_POST['denumire_locatie'];
    $tip_locatie=$_POST['categorie'];
    $judet=$_POST['judet'];
    $localitate=$_POST['localitate'];
    $strada=$_POST['strada'];
    $numar=$_POST['numar'];
    $telefon=$_POST['telefon'];
    $fax=$_POST['fax'];
    $descriere=$_POST['descriere'];
    $data_modificare=date("Y/m/d H:i:s", time() + 3600);
    $adresa_ofertei="oferta.php?id=['id_oferta']";
    $query="INSERT INTO oferte VALUES ('" . $id ."', '$email', '$denumire_locatie','$tip_locatie', '$judet', '$localitate', '$strada', '$numar','$telefon', '$fax', '$descriere','$id', '$data_modificare', '$adresa_ofertei')";
    mysql_query($query) or die (mysql_error());

そのコード行を追加 (およびクエリを更新) すると、オファーを追加できなくなったため、変数「adresa_ofertei」で問題が発生したと思います。基本的に私が望むのは、オファーが追加されたときに、そのエントリの id に基づいてリンクを自動的に生成し、それを MySQL に追加して、次のような動的に生成されたページで使用できるようにすることです。

<?php 
$adresa_ofertei = $_SERVER['PHP_SELF'];
$sql = "UPDATE oferte SET accesari=accesari+1 WHERE adresa_ofertei='$adresa_ofertei' LIMIT 1";
$res = mysql_query($sql); 
?>

「adresa_ofertei」は「offer_address」を意味し、「accesari」は「ヒット」を意味します。データベースとコードのタイプミスをすでに再確認したので、おそらく問題はありません。現在の問題を解決するだけでなく、動的ページに基づいてヒットカウンターを作成する方法を私や他の人が理解するのに役立つような方法で回答してください. どうもありがとうございました。私はPHPとスタックオーバーフローの両方に慣れていないので、評価を下げる前に質問を変更する必要があるかどうかを教えてください。

4

1 に答える 1

2

この 2 点が問題の解決に役立つと思います。

  1. 引用符をエスケープするようにしてください。それらが問題を引き起こしている可能性があります。
  2. ユーザーが送信した情報には、mysql_real_escape_string または準備済みステートメント (html の出力に類似) を使用する必要があります。そうしないと危険です(SQLインジェクション)!!
于 2013-08-03T12:35:55.497 に答える