Popier... if z self::function

0

Witam,

z gory przepraszam za tytul ale siedze juz nad kodem ktoras godzine i jestem juz tam zly ze najchetniej cisnalbym komputerem przez okno najlepiej komus na leb... Ale do rzeczy.

 public function index(){
        
        if(!isset($_SESSION['stats_done']) || $_SESSION['stats_done']!="done"){             
            if(isset($_GET['keyword']) && isset($_GET['campaign']) && isset($_GET['advertisement'])){                 
                self::stats($_GET['keyword'], $_GET['campaign'], $_GET['advertisement']);                
            }else{                  
                self::stats("", "", "");
            }            
        }
  }

  private function stats($keyword, $campaign, $advertisement){
        if(!isset($_COOKIE['unique'])){
            setcookie("unique", "true", time()+60*60*24*30*365, "/", $_SESSION['page_data']['company_name']);
            setcookie("keyword", $keyword, time()+60*60*24*30, "/", $_SESSION['page_data']['company_name']);
            setcookie("campaign", $campaign, time()+60*60*24*30, "/", $_SESSION['page_data']['company_name']);
            setcookie("advertisement", $advertisement, time()+60*60*24*30, "/", $_SESSION['page_data']['company_name']);
            setcookie("reg_level", "0", time()+60*60*24*30, "/", $_SESSION['page_data']['company_name']);

            $this->main_model->add_new($keyword, $campaign, $advertisement);                       
        }else{            
            if(isset($_COOKIE['keyword']) && isset($_COOKIE['campaign']) && isset($_COOKIE['advertisement']) && ( !isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER']=="" || stristr($_SERVER['HTTP_REFERER'], base_url())==FALSE )){
                $this->main_model->add_returning($_COOKIE['keyword'], $_COOKIE['campaign'], $_COOKIE['advertisement']);
            }  
        }                    
        $_SESSION['stats_done']="done";
    }

public function add_new($keyword, $campaign, $advertisement){
            $this->db->select('*');
            $this->db->from('keywords');
            $this->db->where('keyword', $keyword);  
            $this->db->where('campaign', $campaign);
            $this->db->where('advertisement', $advertisement);
            $this->db->where('date', date("Y-m-d"));
            $this->db->limit(1);
            $this->db->order_by('date', 'desc');
            $query = $this->db->get();            
            if($query->num_rows()>0){
                foreach($query->result() as $row){
                    $result[]=$row;
                }                
                $this->db->where('id', $result[0]->id );                  
                $this->db->set('new', 'new+1', FALSE);
                $this->db->update('keywords');                
            }else{
                $data = array(
                    'keyword' => $keyword,
                    'campaign' => $campaign,
                    'advertisement' => $advertisement,
                    'date' => date("Y-m-d"),
                    'new' => "1"
                );
                $this->db->insert('keywords', $data);
            } 
        }
        
        public function add_returning($keyword, $campaign, $advertisement){
            $this->db->select('*');
            $this->db->from('keywords');
            $this->db->where('keyword', $keyword);  
            $this->db->where('campaign', $campaign);
            $this->db->where('advertisement', $advertisement);
            $this->db->where('date', date("Y-m-d"));
            $this->db->limit(1);
            $this->db->order_by('date', 'desc');
            $query = $this->db->get();            
            if($query->num_rows()>0){
                foreach($query->result() as $row){
                    $result[]=$row;
                }
                $this->db->where('id', $result[0]->id); 
                $this->db->set('returning', 'returning+1', FALSE);
                $this->db->update('keywords');
            }else{
                $data = array(
                    'keyword' => $keyword,
                    'campaign' => $campaign,
                    'advertisement' => $advertisement,
                    'date' => date("Y-m-d"),
                    'returning' => "1"
                );
                $this->db->insert('keywords', $data);
            }          
        }

Generalnie chodzi o to... ze w tym cholernym indeksie pomimo podwojnego warunku ifa w jakis cudowny cholera jasna sposob dochodzi do funkcji self::stats("", "", ""); pomimo nie spelniania warunkow ifow ( nie powinno w ogóle tam wlazic. Co najsmieszjniejsze jak dam jakies echo przed to self::stats("", "", ""); to nic nie wypluwa a jak wykomentuje self::stats("", "", ""); to rekordy w bazie nie ulegaja zmianie czyli to ta cholera funkcja a nie cos innego w kodzie.

Po prostu jestem zalamany, nie wspomne juz o tym ze ten chlerny kod dziala troche inaczej na chromie a inaczej na wszystkich innych przegladarkach... czy ja cos debilnego z tymi coockiesami robie czy o co cholera chodzi...

Bede dozgonnie wdzieczny jesli ktos podpowie mi co ja tu narobilem ( badz potwierdzi moje przypuszczenia ze jest jakis cholerny blad w php.

0

TFU mialo byc: * to rekordy w bazie ULEGAJA zmianie

0

nie wczytywałem się w kod, ale jeśli

Vol napisał(a):

dochodzi do funkcji self::stats("", "", ""); pomimo nie spelniania warunkow ifow ( nie powinno w ogóle tam wlazic. Co najsmieszjniejsze jak dam jakies echo przed to self::stats("", "", ""); to nic nie wypluwa

czyli $_GET['keyword'], $_GET['campaign'] i $_GET['advertisement'] są ustawione ale są po prostu puste i linia
self::stats($_GET['keyword'], $_GET['campaign'], $_GET['advertisement']);

robi to samo co

self::stats("", "", "");

czyli prawdopodobnie nie chodziło Ci o funkcję isset tylko !empty

0

Nope, gety jak to gety, moga byc nie ustawione dlatego dalem isset

A to "TFU mialo byc: * to rekordy w bazie ULEGAJA zmianie" prosze zignorowac, mozg mi sie juz lasuje do potegi

0
Vol napisał(a):

Nope, gety jak to gety, moga byc nie ustawione dlatego dalem isset

ale empty sprawdza też czy zmienna jest ustawiona

inaczej mówiąc:

if(!empty($a))

to tak jakby

if(isset($a) && $a)

a jeśli ktoś zostawi puste pole w formularzu to isset zwróci true tylko że zmienna będzie pusta

w każdym razie żadnej magii tu nie ma - jeśli coś się wykonuje to zostało gdzieś wywołane. Idź się przejdź dotlenić mózg i przeanalizuj kod po kroku
zapewniam że nie znalazłeś też żadnego "cholernego błędu w php" którego nie znalazł nikt wcześniej

daj na początku funkcji index:

var_dump($_SESSION['stats_done'], $_GET['keyword'], $_GET['campaign'], $_GET['advertisement']);

i pokaż co wyszło

0

A to nie wiedzialem ze empty tak dziala, dzieki przyda sie.

Przysiegam z reka na sercu ze analizuje ten kod od 6 godzin i nie znajduje nieporzadanego wywolania ( ctrl + f ) , nie wiem co jest grane , juz robilem dwukrotnie sobie spacerek z psem i zimny prysznic zebym nie zagotowal sie ze zlosci. Nic nie pomaga :/

Co do dumpa to
string(4) "done" string(4) "dupa" string(3) "asd" string(4) "asdf"
ale to dosc oczywiste z tego wzgledu ze te gety brane sa z adresu ?keyword=dupa&campaign=asd&advertisement=asdf

Dopisano:
Juz wiem...

RewriteEngine htaccessu zmienial mi adres z www.____.pl/index.php na wersje bez index.php przez co byly 2 wywolania tak naprawde a nie jedno a przy drugim faktycznie mialo prawo wchodzic do petli... Jestem tak zly ze chetnie bym sie poplakal...

Dopisano:
Jeszcze lepiej, chodzi chyba o request favico ktory mi wszystko pieprzy... juz raz to mialem i jakos nie przyszlo mi to wczesniej do glowy...

1 użytkowników online, w tym zalogowanych: 0, gości: 1