0

ねえ、私はまだ評価システムについて少し助けが必要ですが、クッキーが存在するかどうかを確認するのに問題があります。

<?php

    $rating = new ratings($_POST['widget_id']);


    isset($_POST['fetch']) ? $rating->get_ratings() : $rating->vote();





class ratings {

    var $data_file = './ratings.data.txt';
    private $widget_id;
    private $data = array();


function __construct($wid) {

    $this->widget_id = $wid;

    $all = file_get_contents($this->data_file);

    if($all) {
        $this->data = unserialize($all);
    }
}

public function get_ratings() {
    if($this->data[$this->widget_id]) {
        echo json_encode($this->data[$this->widget_id]);
    }
    else {
        $data['widget_id'] = $this->widget_id;
        $data['number_votes'] = 0;
        $data['total_points'] = 0;
        $data['dec_avg'] = 0;
        $data['whole_avg'] = 0;
        echo json_encode($data);
    } 
}
public function vote() {

    # Get the value of the vote
    preg_match('/star_([1-5]{1})/', $_POST['clicked_on'], $match);
    $vote = $match[1];

    $ID = $this->widget_id;
    # Update the record if it exists

    # doesn't update if it already exists
    if (!isset($_COOKIE[$id])) {

    if($this->data[$ID]) {
        $this->data[$ID]['number_votes'] += 1;
        $this->data[$ID]['total_points'] += $vote;
    }
    # Create a new one if it doesn't
    else {
        $this->data[$ID]['number_votes'] = 1;
        $this->data[$ID]['total_points'] = $vote;
    }

    $this->data[$ID]['dec_avg'] = round( $this->data[$ID]['total_points'] / $this->data[$ID]['number_votes'], 1 );
    $this->data[$ID]['whole_avg'] = round( $this->data[$ID]['dec_avg'] );


    file_put_contents($this->data_file, serialize($this->data));
    $this->get_ratings();
}
} //ends if isset
# ---
# end class
}

?>

Cookie が存在するかどうかを確認する必要がある部分は次のとおりです。

if (!isset($_COOKIE[$id])) {

しかし、何らかの理由で、それを追加してもスクリプトで何も機能しません。

4

2 に答える 2

1
if (!isset($_COOKIE[$id])) { 

すべてを として宣言しまし$IDたが、 を使用しています$id。それを切り替えてみて、それが機能するかどうかを確認してください。

if (!isset($_COOKIE[$ID])) {
于 2013-01-04T15:41:35.353 に答える
0

あなたがやりたかったことは、!isset (存在しない場合) の代わりに isset (存在する場合) だと思います

if (isset($_COOKIE[$id])) {
于 2013-01-04T15:44:07.777 に答える