Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MSSQL][PHP]Use of undefined constant - assumed
meegi
post 12.12.2015, 18:50:39
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.12.2015

Ostrzeżenie: (0%)
-----


Witajcie, jestem poczatkujaca w php. Pisze koszyk do sklepu oparty o sesje i baze danych. Wywala mi taki oto blad:

Notice: Use of undefined constant SESSION_COOKIE - assumed 'SESSION_COOKIE' in D:\XAMPP\htdocs\sessions.php on line 14

Notice: Use of undefined constant SESSION_COOKIE - assumed 'SESSION_COOKIE' in D:\XAMPP\htdocs\sessions.php on line 15

Notice: Use of undefined constant SESSION_COOKIE - assumed 'SESSION_COOKIE' in D:\XAMPP\htdocs\sessions.php on line 30

Notice: Use of undefined constant SESSION_COOKIE_EXPIRE - assumed 'SESSION_COOKIE_EXPIRE' in D:\XAMPP\htdocs\sessions.php on line 31

Fatal error: Call to undefined function random_session_id() in D:\XAMPP\htdocs\sessions.php on line 66

To jest moj kod w sessions.php:

Kod
<?php
    class session{
        private $id;
        private $ip;
        private $browser;
        private $time;
        private $user;
        private $salt;
        
        
        public function __construct (){
            global $pdo, $request;
            
            if(!isset ($_COOKIE[SESSION_COOKIE])){
                $_COOKIE[SESSION_COOKIE] = '';
            }
            else{
                if(strlen($_COOKIE[SESSION_COOKIE]) != SESSION_ID_LENGHT) {
                    $this->newSession();
                }
            }
            
            $pdo = new PDO('mysql:host=localhost;port=3306;dbname=sklep','root','root');

            $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $pdo -> exec ("SET NAMES 'utf8'");

            $stmt = $pdo->prepare('SELECT session_id, updated_at, salt_token, user_id, uniq_info, ip, browser FROM sessions WHERE session_id = :sid AND uniq_info = :info AND updated_at > :updated AND IP = :ip AND browser = :browser');
            
            $stmt->bindValue(':sid', $_COOKIE[SESSION_COOKIE], PDO::PARAM_STR);
            $stmt->bindValue(':updated', time() - SESSION_COOKIE_EXPIRE, PDO::PARAM_INT);
            $stmt->bindValue(':info', $request->getInfo(), PDO::PARAM_STR);
            $stmt->bindValue(':ip',$request->getIp(), PDO::PARAM_STR);
            $stmt->bindValue(':browser', $request->getBrowser(), PDO::PARAM_STR);
            $stmt->execute();
            
            if($session = $stmt-> fetch(PDO::FETCH_ASSOC)){
                $stmt->closerCursor();
                $this->id = $_COOKIE[SESSION_COOKIE];
                $this->salt = $session['salt_token'];
                $this->ip = $session['ip'];
                $this->browser = $session['browser'];
                $this->time = $session['updated_at'];
                
                setcookie(SESSION_COOKIE, $this->id, time() + SESSION_COOKIE_EXPIRE);
                
                $stmt = $pdo->prepare('UPDATE sessions SET updated_at = "time WHERE session_id = :sid');
                $stmt->bindValue(':sid', $_COOKIE[SESSION_COOKIE], PDO::PARAM_STR);
                $stmt->bindValue(':time',time(), PDO::PARAM_INT);
                $stmt->execute();
                
                if($session['user_id'] !=0){
                    //zalogowani
                }
                else {
                    $this->user = new user(true);
                }
            }
            else {
                $stmt->closeCursor();
                $this->newSession();
            }
            }
        function newSession(){
            global $pdo, $request;
            $this->id = random_session_id();
            $this->salt = random_salt(10);
            setcookie(SESSION_COOKIE, $this->id, time() + SESSION_COOKIE_EXPIRE);
            
            $stmt = $pdo->prepare('INSERT INTO sessions (session_id, updated_at, salt_token, user_id, uniq_info, browser, ip) VALUES (:session_id, :time, :salt, :user_id, :info, :browser, :ip)');
            $stmt->bindValue(':session_id', $this->id, PDO::PARAM_STR);
            $stmt->bindValue(':time',time(), PDO::PARAM_INT);
            $stmt->bindValue(':salt', $this->salt, PDO::PARAM_STR);
            $stmt->bindValue(':user_id',0,PDO::PARAM_INT);
            $stmt->bindValue(':info',$request->getInfo(), PDO::PARAM_STR);
            $stmt->bindValue(':browser', $request->getBrowser(),PDO::PARAM_STR);
            $stmt->bindValue(':ip', $request->getIp(), PDO::PARAM_STR);
            $stmt->execute();
            $this->user = new user(true);
            
            }
            
            function updateSession (user $user){
                global $pdo, $request;
            }
        }
    



?>

a to w functions.php gdzie mam wszystkie funkcje do tego:
Kod
<? php
    define('SESSION_COOKIE','cookiesklep');
    define('SESSION_ID_LENGHT', 40);
    define('SESSION_COOKIE_EXPIRE', 3600);
    
    function random_session_id(){
        $utime = time();
        $id = random_salt(40-strlen($utime)).$utime;
        return $id;
    }
    
    function random_salt($len){
        return random_text($len);
    }
    

    function random_text($len){
        $base = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890';
        $max = strlen($base)-1;
        $rstring ='';
        mt_srand((double)microtime()*1000000);
        while(strlen($rstring)< $len)
            $rstring.=$base[mt_rand(0,$max)];
        return $rstring;
    }
    
?>


Czy ktoś mi może pomoc i powiedziec co tutaj jest nie tak?

Ten post edytował meegi 12.12.2015, 19:05:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
valkirek
post 12.12.2015, 19:37:20
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

Ostrzeżenie: (0%)
-----


szacun, ze jestes "poczatkujaca" i od razu "pisze koszyk" w oop i pdo a nie znasz podstaw, przyznaj, ze masz skrypt i nie wiesz o co chodzi
Go to the top of the page
+Quote Post
com
post 12.12.2015, 19:39:27
Post #3





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Pyton_000 to chyba jest ok bo ma taką stała, tylko nie dołączany jest plik z nimi przed wywołaniem

Ten post edytował com 13.12.2015, 14:17:55
Go to the top of the page
+Quote Post
meegi
post 12.12.2015, 22:04:42
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.12.2015

Ostrzeżenie: (0%)
-----


dzięki wielkie, pomogło.

pozostał mi jeden błąd mianowicie:
Fatal error: Unsupported operand types in D:\XAMPP\htdocs\sessions.php on line 31

linijka 31 wyglada tak:
$stmt->bindValue(':updated', time() - ['SESSION_COOKIE_EXPIRE'], PDO::PARAM_INT);

ponizej wklejam jeszcze raz cały plik sessions.php
Kod
<?php
    class session{
        private $id;
        private $ip;
        private $browser;
        private $time;
        private $user;
        private $salt;
            
        public function __construct (){
            global $pdo, $request;
            
            if(!isset ($_COOKIE['SESSION_COOKIE'])){
                $_COOKIE['SESSION_COOKIE'] = '';
            }
            else{
                if(strlen($_COOKIE['SESSION_COOKIE']) != SESSION_ID_LENGHT) {
                    $this->newSession();
                }
            }
            
            $pdo = new PDO('mysql:host=localhost;port=3306;dbname=sklep','root','root');

            $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $pdo -> exec ("SET NAMES 'utf8'");

            $stmt = $pdo->prepare('SELECT session_id, updated_at, salt_token, user_id, uniq_info, ip, browser FROM sessions WHERE session_id = :sid AND uniq_info = :info AND updated_at > :updated AND IP = :ip AND browser = :browser');
            
            $stmt->bindValue(':sid', $_COOKIE['SESSION_COOKIE'], PDO::PARAM_STR);
            $stmt->bindValue(':updated', time() - ['SESSION_COOKIE_EXPIRE'], PDO::PARAM_INT);
            $stmt->bindValue(':info', $request->getInfo(), PDO::PARAM_STR);
            $stmt->bindValue(':ip',$request->getIp(), PDO::PARAM_STR);
            $stmt->bindValue(':browser', $request->getBrowser(), PDO::PARAM_STR);
            $stmt->execute();
            
            if($session = $stmt-> fetch(PDO::FETCH_ASSOC)){
                $stmt->closerCursor();
                $this->id = $_COOKIE[SESSION_COOKIE];
                $this->salt = $session['salt_token'];
                $this->ip = $session['ip'];
                $this->browser = $session['browser'];
                $this->time = $session['updated_at'];
                
                setcookie(SESSION_COOKIE, $this->id, time() + SESSION_COOKIE_EXPIRE);
                
                $stmt = $pdo->prepare('UPDATE sessions SET updated_at = "time WHERE session_id = :sid');
                $stmt->bindValue(':sid', $_COOKIE[SESSION_COOKIE], PDO::PARAM_STR);
                $stmt->bindValue(':time',time(), PDO::PARAM_INT);
                $stmt->execute();
                
                if($session['user_id'] !=0){
                    //zalogowani
                }
                else {
                    $this->user = new user(true);
                }
            }
            else {
                $stmt->closeCursor();
                $this->newSession();
            }
            }
        function newSession(){
            global $pdo, $request;
            $this->id = random_session_id();
            $this->salt = random_salt(10);
            setcookie(SESSION_COOKIE, $this->id, time() + SESSION_COOKIE_EXPIRE);
            
            $stmt = $pdo->prepare('INSERT INTO sessions (session_id, updated_at, salt_token, user_id, uniq_info, browser, ip) VALUES (:session_id, :time, :salt, :user_id, :info, :browser, :ip)');
            $stmt->bindValue(':session_id', $this->id, PDO::PARAM_STR);
            $stmt->bindValue(':time',time(), PDO::PARAM_INT);
            $stmt->bindValue(':salt', $this->salt, PDO::PARAM_STR);
            $stmt->bindValue(':user_id',0,PDO::PARAM_INT);
            $stmt->bindValue(':info',$request->getInfo(), PDO::PARAM_STR);
            $stmt->bindValue(':browser', $request->getBrowser(),PDO::PARAM_STR);
            $stmt->bindValue(':ip', $request->getIp(), PDO::PARAM_STR);
            $stmt->execute();
            $this->user = new user(true);
            
            }
            
            function updateSession (user $user){
                global $pdo, $request;
            }
        }
    
?>
Go to the top of the page
+Quote Post
mls
post 12.12.2015, 22:10:46
Post #5





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Generalnie tak kończy się, nie tylko dla początkujących, próba użycia cudzego kodu bez wiedzy jak on działa.
Tak czy inaczej, żadna zamiana $_COOKIE[SESSION_COOKIE] na $_COOKIE['SESSION_COOKIE'] tylko brakujące definicje stałych. Tu zamieni, a stała występuje jeszcze w niejednym miejscu tej klasy. Tak samo, jak stała SESSION_COOKIE_EXPIRE.
Wobec czego, autorkę wątku odsyłam do http://php.net/constants - jeśli czegokolwiek chce się nauczyć.


--------------------
Go to the top of the page
+Quote Post
meegi
post 12.12.2015, 22:21:42
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.12.2015

Ostrzeżenie: (0%)
-----


oczywiście, że korzystam z tutorialu, bo jak pisałam jestem początkująca. Nie rozumiem tylko dlaczego mi to nie działa, skoro mam tak samo wszystko zrobione.
Go to the top of the page
+Quote Post
IProSoft
post 12.12.2015, 22:32:59
Post #7





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

Ostrzeżenie: (0%)
-----


Najwyraźniej nie masz. Jeśli to tutorial online to podeślij link, sprawdzimy.


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
meegi
post 12.12.2015, 22:37:57
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.12.2015

Ostrzeżenie: (0%)
-----


prosze tutaj link do tutorialu, z którego korzystam:tutorial
odcinek drugi, mniej wiecej od 25 minuty.
Jedyna roznica jest taka, ze nie mam pliku header.php tylko require dodalam do mojej strony index.php, no ale może ja coś przeoczyłam.
Go to the top of the page
+Quote Post
com
post 13.12.2015, 14:15:37
Post #9





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


a dołączasz je w kolejności:

  1. require 'function.php';
  2. require 'session.php';
  3. require 'request.php';


Bo w innej nie zadziała i stad te brakujące stałe, a to co podał Pyton_000 akurat nie jest dla Twojego przypadku poprawne, bo autor nie to miał na myśli.

Tutaj przykład żeby to zilustrować, spójrz na wynik http://ideone.com/j0K6J4

Pyton_000 zasugerował się częstym błędem początkujących osób które zapominają o stosowaniu '', ale autor kursu zrobił to akurat celowo smile.gif

Można powiedzieć, że jest to błąd, bo nie powinno się robić tego w ten sposób, bo wywołanie takie jest nie jasne, trzeba znać wtedy cały kod, sam bym tego nie wiedział gdybyś nie dała pliku function.php w którym to było, o czym już wspomniałem w poprzednim poście który zignorowałaś biggrin.gif

Druga sprawa, kod tego tutoriala sam w sobie nie jest zbyt dobrej jakości, co już widać po zamieszczonym fragmencie smile.gif

Ten post edytował com 13.12.2015, 14:20:09
Go to the top of the page
+Quote Post
meegi
post 13.12.2015, 15:54:53
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.12.2015

Ostrzeżenie: (0%)
-----


oczywiście, mam dołączone do mojej strony index.php taki oto kod:
  1. <?php
  2. require ('functions.php');
  3. require ('sessions.php');
  4. require ('request.php');
  5. require ('user.php');
  6. $request = new userRequest;
  7. $session = new session;
  8. ?>


Go to the top of the page
+Quote Post
com
post 13.12.2015, 17:39:29
Post #11





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


w pliku functions.php na początku masz
<? php zamiast <?php smile.gif
Go to the top of the page
+Quote Post
meegi
post 13.12.2015, 17:54:05
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.12.2015

Ostrzeżenie: (0%)
-----


ok, poprawione, ale nadal wywala ten sam bład niestety sad.gif
Go to the top of the page
+Quote Post
com
post 13.12.2015, 19:24:24
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


a cofnęłaś te zmiany zaproponowane przez Pyton_000 ?
Go to the top of the page
+Quote Post
Pyton_000
post 13.12.2015, 20:03:55
Post #14





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Wyperdzieliłem tego posta bo tylko zamieszania wprowadziłem tongue.gif
Go to the top of the page
+Quote Post
meegi
post 14.12.2015, 21:26:45
Post #15





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.12.2015

Ostrzeżenie: (0%)
-----


cofnelam te zmiany i działa, baaardzo Wam dziekuje za pomoc specool.gif

Dodalam sobie koszyk i obsluge za pomoca sesji. Dodanie produktu do koszyka dziala, bo w bazie go widze, ale już nie działa mi jego wyświetlanie. Ktoś może zerknąć?
screeny

Strzelam ze coś w funkcji getProducts sknociłam.

podbijam, poniewaz edytowalam wczesniejszy post

Ten post edytował meegi 14.12.2015, 19:10:28
Go to the top of the page
+Quote Post
com
post 15.12.2015, 02:15:17
Post #16





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


A pojawia się jakiś błąd, albo coś w tym stylu?

Btw, ja widzę że ty masz inny kod w cart.php niż jest na filmie 3 - Koszyk, wiec pewnie jak dodasz to czego brakuje to zacznie działać, tak myślę smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:07