Autor Zpráva
undisputed
Profil
Ako uložiť session do premennej?lebo na stránke na testovacej stránke mám aby mi vypísalo ten údaj v session to ide ale ešte údaj z db kde je nick=session ,a to už mi tak nejde
Jozin
Profil
Zdravím,

můžeš sem napsat, jak to tam máš napsané? Líp se potom radí.

Na otázku jak se dá do session uložit do proměnné: jednoduchým přiřazením asi takto:
<?php
$nick = $_SESSION['nick'];
undisputed
Profil
Áno tak to mám tak mi to vypíše prvý údaj teda to meno,ale keď dám:

mysql_query("SELECT nieco FROM tabulka where nick=$nick");

Tak mi už ten údaj nevypíše
Keeehi
Profil
mysql_query("SELECT nieco FROM tabulka where nick='$nick'");
undisputed
Profil
ani tak
(aj keď som chcel aby ma to prenieslo na napr. niekam.php?nick=$nick = tak vypísalo nick=Array)
Keeehi
Profil
undisputed:
Jak vypadá výstup z var_dump($nick);?
undisputed
Profil
To tam nemám
Keeehi
Profil
undisputed:
Tak to tam napiš.
Davex
Profil
undisputed:
Pokud je proměnná $nick inicializovaná mimo funkci než ve které je použitá, tak přístupná nebude, protože už nemusí ani existovat. Máš nějaký důvod nepoužívat přímo $_SESSION['nick']?
Keeehi
Profil
Davex:
Řekl bych, že jsi teď trochu někde úplně jinde. Nebo to teda vůbec nechápu, jak to myslíš.
Davex
Profil
Keeehi:
Jelikož undisputed neukázal žádný relevantní kód, tak se pouze domnívám, že proměnnou $nick nastavuje v jiné funkci než jí čte. Nevím, třeba funkce nepoužívá, ale v globálním kontextu by s tím problém neměl.
undisputed
Profil
no takže takto keď užívatel napíše svoj nick a heslo skontroluje mu to cez toto:

<?php
session_start();
// prihlasenie
if (isset($_POST['nick']) && isset($_POST['heslo'])){
  include "connect.php";
            @$query = "SELECT * FROM uzivatelia WHERE nick=\"".$_POST['nick']."\"";
              if (!$query) {
                    echo "Spojenie z databázou sa nepodarilo";
                }
            @$result = mysql_query($query, $link);
              if (!$query) {
                    echo "Vyber z databázi sa nepodaril";
                }
                $cosi = mysql_fetch_array($result);
if ($cosi['heslo'] == ($_POST['heslo'])){
$_SESSION["nick"] = $cosi;

$a=$_POST['nick'];
        header("Location:main.php");
            }
else 
{
header("Location:index.php");
}
}
else 
{
header("Location:index.php");
}
?>



Presmeruje ma to teda na main.php ALE tam je toto

<?php
session_start();
if (isset($_SESSION['nick'])) {
}
else 
{
header("Location:index.php");
}

?>


to ešte funguje pretože sa tam dostanem
ALE potom je tam vtom main.php aj toto

$nicko= $_SESSION['nick'];
$vysledok = mysql_query("select nieco from tabulka where nick = $nicko"); $r =mysql_fetch_assoc ($vysledok); $premenna = $r['nieco'];


a tu už nič nevypíše(a nielen z DB aj ked dám len napr. vitaj užívateľ $_SESSION['nick'] tak tiež nič
undisputed
Profil
No trocha som to upravil a napísalo mi "Array"
Keeehi:
Dal som to tam a:
array(32) { [0]=> string
(1) "1" ["id"]=> string(1)
"1" [1]=> string(5)
"admin" ["nick"]=>
string(5) "admin" [2]=>
string(15)
"t@centrum.sk" ["email"]=>
string(15)
"t@centrum.sk"
a tak to ide ešte dlho všetky položky z jednej tabulky kde je ten dotyčný nick
Davex
Profil
V $_SESSION['nick'] máš uložené pole. Do proměnné $nicko bys měl asi ukládát $_SESSION['nick']['nick'].
undisputed
Profil
Áno je to tak, môžete mi vysvetliť to trochu bližšie prečo to tak má byť?
Keeehi
Profil
Takto to je hezčí ne?
<?php
session_start();
// prihlasenie
if (isset($_POST['nick']) && isset($_POST['heslo'])){
    include "connect.php";
    $result = mysql_query("SELECT nick FROM uzivatelia WHERE nick='".mysql_real_escape_string($_POST["nick"])."' AND heslo='".mysql_real_escape_string($_POST["heslo"])."'", $link) or die("Vyber z databázi sa nepodaril");
    if(mysql_num_rows($result) == 1){
        $_SESSION["nick"] = mysql_result($result,0);
        header("Location:main.php");
    }          
    else 
        header("Location:index.php");
else 
    header("Location:index.php");
?>

Hlavně by tam neměly být ty bezpečnostní chyby a nick je v $_SESSION["nick"], kde by ho normální člověk čekal a ne v $_SESSION["nick"]["nick"]
undisputed
Profil
No ani nie pretože ten tvoj skript je zlý,. niekde je chyba,
pretože ma to nehodí vpodstate nikam :) ani na main ani na index (hodí ma to na ten dotyčný skript)
undisputed
Profil
A neviem čím to je, ale keď už som na main.php tak mi to ukazuje dobre ale dal som tam odkaz na ďalšiu stránku kde je tiež session a tam už mi to zase ukazuje len "Array" :( aj pri $nick=$_SESSION['nick']['nick']
Keeehi
Profil
undisputed:
Přesměrovávat to musí, jelikož jiná možnost není. Ať se script vydá jakoukoliv větví, vždy na konci je to přesměrování. Takže chyba bude asi někde jinde. Navíc je naprosto nemožné, aby v $_SESSION['nick'] bylo pole, jelikož mysql_result vrátí řetězec.
undisputed
Profil
A ako má vrátiť pole?
Keeehi
Profil
undisputed:
mysql_result ti vrátí obsah jedné buňky, takž pole nevrací.
undisputed
Profil
čiže to nejde nijak spraviť?
Keeehi
Profil
undisputed:
Tak ano, jsou funkce, které ti vrátí celý řádek z tabulky jako pole (ty jsi používal ty), ale netuším, k čemu to momentálně potřebuješ. Když se z DB vybírá pouze sloupec nick a navíc bude vždy jen jeden.
undisputed
Profil
hmm

nerozumiem,

ja mám v tabulke údaje o nicku, a keď ich potrebujem len vypísať podľa toho aký nick sa logol

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0