• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dziwne zachowanie sesji... Co jest grane?

Object Storage Arubacloud
0 głosów
173 wizyt
pytanie zadane 30 lipca 2015 w PHP przez makoso Mądrala (7,380 p.)

Gdy używam poniższego kodu zanic nie idzie wyświetlić zmiennej sesyjnej ktoś powie czemu? problem leży z unsetem ale nie mam pojęcia jak to zrobić aby było dobrze -.-

 if(!empty($_SESSION['info'])) {

            $info = $_SESSION['info'];
            unset($_SESSION['info']);
            echo ' <div class="casementerror">'.$info.'</div>';
        }

 

natomiast wyświetla normalnie gdy nie ma unset ale musze mieć tak że wyświetle jezeli wyświetlono skasuj próbowałem już kilka warunków jeszcze do tego dodawać nic nie daje mi efektu 

2 odpowiedzi

0 głosów
odpowiedź 30 lipca 2015 przez Comandeer Guru (601,530 p.)
Hmm... Kod działa bez problemu: http://ideone.com/avqoPF (warningami się nie przejmuj, bo to jakiś problem kompilatora)
komentarz 30 lipca 2015 przez makoso Mądrala (7,380 p.)
coś dziwnego się dzieje :) mi nie działa :)

mam funkcje w niej ustawiam sesję(wcześniej zwracałem info i dopiero ustawiałem efekt ten sam) i póxniej wykonuję ten kod i nic jak nie mam unsetu to wyświetla jak mam to nie wyswietla nigdzie nie nadpisuję sesji [info] a przed wyświetleniem nie kasuje i już mnie szlak trafia :)
komentarz 30 lipca 2015 przez Comandeer Guru (601,530 p.)
Musiałbyś pokazać więcej kodu.
komentarz 30 lipca 2015 przez makoso Mądrala (7,380 p.)
edycja 30 lipca 2015 przez makoso

funckje
 

//w funkcji upbuild ustawiam sesje
<?php
function GetCost($budynek)
    {
        $ActualBuild = $this->User->budynki_rozbudowa;
        $poziom = $this->User->budynki->{$budynek} + 1;
        if (!empty($ActualBuild->budynek)) {
            if ($ActualBuild->budynek == $budynek) {
                $poziom++;
            }
        } elseif (!empty($ActualBuild[2])) {
            if ($ActualBuild[1]->budynek == $budynek) {
                $poziom++;
            }
            if ($ActualBuild[2]->budynek == $budynek) {
                $poziom++;
            }
        }
        $Query = $this->pdo->prepare('SELECT * FROM budynki_koszt WHERE budynek = ? AND poziom = ?');
        $Query->bindParam(1, $budynek, PDO::PARAM_STR);
        $Query->bindParam(2, $poziom, PDO::PARAM_INT);
        $Query->execute();
        $Ret = $Query->fetch(PDO::FETCH_OBJ);
        return $Ret;
    }
    function GetRequirements($build)
    {
        $Query = $this->pdo->prepare('SELECT * FROM budynki_wymagania WHERE budynek = ?');
        $Query->bindParam(1, $build, PDO::PARAM_STR);
        $Query->execute();
        $r=$Query->fetch(PDO::FETCH_OBJ);
            list($bud, $lvl) = explode('__',$r->wymaganie1);
            list($bud2, $lvl2) = explode('__',$r->wymaganie2);
            list($bud3, $lvl3) = explode('__',$r->wymaganie3);
            $a=array (
                "wymaga1"  =>
                array ( 'budynek' => $bud,
                            "lvl" => $lvl),
                "wymaga2"  =>
                array ( 'budynek' => $bud2,
                            "lvl" => $lvl2),
                "wymaga3"  =>
                array ( 'budynek' => $bud3,
                            "lvl" => $lvl3)
            );
        return $a;
    }
    function ChekRequirements($build,$lvl)
    {
        if($lvl == $this->User->budynki->{$build})
        {return true;}
        else {return false;}
    }
    function UpBuild($build)
    {
        $ActualBuild = $this->User->budynki_rozbudowa;
        if (empty($ActualBuild->budynek)) {
            if (!empty($ActualBuild[2])) {
                $_SESSION['info']= 'Możesz zlecić 2 budowy w jednym czasie, poczekaj na zakończenie aktualnej budowy';
                return false;
            }
        }
        $Requirements = $this->GetRequirements($build);
        $wymagania = '';
        if(!empty($Requirements['wymaga1']['budynek'])) {
            if ($this->ChekRequirements($Requirements['wymaga1']['budynek'], $Requirements['wymaga1']['lvl']) != true) {
                if ($this->ChekRequirements($Requirements['wymaga2']['budynek'], $Requirements['wymaga2']['lvl']) != true) {
                    if ($this->ChekRequirements($Requirements['wymaga3']['budynek'], $Requirements['wymaga3']['lvl']) != true) {
                        if (empty($wymagania)) {
                            $wymagania .= ' ' . nazwy_poj($Requirements['wymaga1']['budynek']) . ' (' . $Requirements['wymaga1']['lvl'] . ')';
                        } else {
                            $wymagania .= ', ' . nazwy_poj($Requirements['wymaga1']['budynek']) . ' (' . $Requirements['wymaga1']['lvl'] . ')';
                        }
                    }
                    if (empty($wymagania)) {
                        $wymagania .= ' ' . nazwy_poj($Requirements['wymaga2']['budynek']) . ' (' . $Requirements['wymaga2']['lvl'] . ')';
                    } else {
                        $wymagania .= ', ' . nazwy_poj($Requirements['wymaga2']['budynek']) . ' (' . $Requirements['wymaga2']['lvl'] . ')';
                    }
                }
                if (empty($wymagania)) {
                    $wymagania .= ' ' . nazwy_poj($Requirements['wymaga3']['budynek']) . ' (' . $Requirements['wymaga3']['lvl'] . ')';
                } else {
                    $wymagania .= ', ' . nazwy_poj($Requirements['wymaga3']['budynek']) . ' (' . $Requirements['wymaga3']['lvl'] . ')';
                }
            }
        }
        if(!empty($wymagania)){
            $zamien= array(", Kwatera główna (1)","Kwatera główna (1)");
            $_SESSION['info']='Nie spełniasz wszystkich wymagań budynku<br/>do wybudowania '.strtolower(nazwy_poj($build)).' wymagane są następujące budynki:<br/>'.strtolower(str_replace($zamien,'',$wymagania));
            return false;
        }
        $ActualTime = $_SERVER['REQUEST_TIME'];
        if (!empty($ActualBuild->koniec)) {
            $ActualTime = $ActualBuild->koniec;
        }
        function GetTrue($DataUser, $dataCost)
        {
            if ($DataUser >= $dataCost) {
                $r = $DataUser - $dataCost;
                return $r;
            } else {
                return false;
            }
        }
        $Cost = $this->GetCost($build);
        $drewno = GetTrue($this->User->surowce->drewno, $Cost->drewno);
        $kamien = GetTrue($this->User->surowce->kamien, $Cost->kamien);
        $zelazo = GetTrue($this->User->surowce->zelazo, $Cost->zelazo);
        $zloto = GetTrue($this->User->surowce->zloto, $Cost->zloto);
        $czas = $ActualTime + $Cost->czas;
        $brak = '';
        if ($drewno == false) {
            if (empty($brak)) {
                $brak .= ' drewna';
            } else {
                $brak .= ', drewna';
            }
        }
        if ($kamien == false) {
            if (empty($brak)) {
                $brak .= ' kamienia';
            } else {
                $brak .= ', kamienia';
            }
        }
        if ($zelazo == false) {
            if (empty($brak)) {
                $brak .= ' żelaza';
            } else {
                $brak .= ', żelaza';
            }
        }
        if ($zloto == false) {
            if (empty($brak)) {
                $brak .= ' złota';
            } else {
                $brak .= ', złota';
            }
        }
        if (!empty($brak)) {
            $_SESSION['info']= 'Nie posiadasz wystarczającej ilości surowców, do rozbudowy '.strtolower(nazwy_poj($build)).' potrzeba<br/> '. $Cost->drewno.' drewna, '. $Cost->kamien.' kamienia, '. $Cost->zelazo.' żelaza, '. $Cost->zloto.' złota';
            return false;
        }
        $Query = $this->pdo->prepare('INSERT INTO budynki_rozbudowa (id, budynek, poziom, koniec) VALUES (?,?,?,?)');
        $Query->bindParam(1, $this->UserId, PDO::PARAM_INT);
        $Query->bindParam(2, $build, PDO::PARAM_STR);
        $Query->bindParam(3, $Cost->poziom, PDO::PARAM_INT);
        $Query->bindParam(4, $czas, PDO::PARAM_INT);
        $Query->execute();
        $QueryTwo = $this->pdo->prepare('UPDATE surowce SET drewno = ?, kamien = ?, zelazo = ?, zloto = ? WHERE id = ?');
        $QueryTwo->bindParam(1, $drewno, PDO::PARAM_INT);
        $QueryTwo->bindParam(2, $kamien, PDO::PARAM_STR);
        $QueryTwo->bindParam(3, $Cost->poziom, PDO::PARAM_INT);
        $QueryTwo->bindParam(4, $zloto, PDO::PARAM_INT);
        $QueryTwo->bindParam(5, $this->UserId, PDO::PARAM_INT);
        $QueryTwo->execute();
        return true;
    }



wyświetlenie tutaj:

 

//skopiowaem do momentu użycie sesji dalej już nie używam
<?
$upbuild=waliduj($_GET['build']);
if(!empty($upbuild))
{
    $budynki->UpBuild($upbuild);
    header('Location: index.php?page=casement');
}
?>

        <?php
        }
        if(!empty($_SESSION['info'])) {
            $info = $_SESSION['info'];
            unset($_SESSION['info']);
            echo ' <div class="casementerror">'.$info.'</div>';
        }
        ?>
komentarz 30 lipca 2015 przez Comandeer Guru (601,530 p.)
Coś nie działają linki...
komentarz 30 lipca 2015 przez makoso Mądrala (7,380 p.)
wiem poprawiłem kom skróciłem o html i już jest tutaj

nie chciałem skracać więc wstawiłem całą funkcje :) cięzka do czytania ale chodzi tylko o momentu gdy przypisuję do sesji i tak jak mówię problem jest coś z wyświetlaniem nie wiem czemu -.- mówię jak nie użyję unset to wyświetli tylko że zostanie a ja potrzebuję po wyświetleniu to skasować :(
komentarz 30 lipca 2015 przez Comandeer Guru (601,530 p.)
Nie widzę nic podejrzanego.. Hm.
komentarz 30 lipca 2015 przez makoso Mądrala (7,380 p.)
no własnie a ja wiem że wszystko co tam jest powinno działać -.- spróbuję specjalnie ciasteczko tworzyć do tego i czy będzie to samo czy nie
komentarz 30 lipca 2015 przez makoso Mądrala (7,380 p.)
zastosowałem cookie i działa ale to nie zmienia faktu że sesja też powinna działać -.-
0 głosów
odpowiedź 5 sierpnia 2015 przez roque Bywalec (2,160 p.)
if(!empty($_SESSION['info'])) {
           echo ' <div class="casementerror">'.($_SESSION['info']).'</div>';
           unset($_SESSION['info']);
}

A nie lepiej tak?

komentarz 5 sierpnia 2015 przez makoso Mądrala (7,380 p.)
z sesją wszystko było próbowane nie działało -.- używam do tego ciasteczka które też odrazu kasuje :) tak czy sial dzięki za próbę :)

Podobne pytania

+2 głosów
1 odpowiedź 278 wizyt
pytanie zadane 23 października 2020 w JavaScript przez boneoflive Użytkownik (930 p.)
0 głosów
1 odpowiedź 219 wizyt
pytanie zadane 1 lutego 2021 w PHP przez _Pita_ Stary wyjadacz (11,410 p.)
0 głosów
0 odpowiedzi 402 wizyt
pytanie zadane 26 marca 2019 w PHP przez MrxCI Dyskutant (8,260 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...