Autor | Zpráva | ||
---|---|---|---|
undisputed Profil |
#1 · Zasláno: 19. 5. 2011, 18:10:27
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 |
#2 · Zasláno: 19. 5. 2011, 18:15:24
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 |
#3 · Zasláno: 20. 5. 2011, 07:18:50
Á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 |
#4 · Zasláno: 20. 5. 2011, 08:23:04
mysql_query("SELECT nieco FROM tabulka where nick='$nick'"); |
||
undisputed Profil |
#5 · Zasláno: 20. 5. 2011, 16:49:54
ani tak
(aj keď som chcel aby ma to prenieslo na napr. niekam.php?nick=$nick = tak vypísalo nick=Array) |
||
Keeehi Profil |
#6 · Zasláno: 20. 5. 2011, 16:59:31
undisputed:
Jak vypadá výstup z var_dump($nick); ?
|
||
undisputed Profil |
#7 · Zasláno: 20. 5. 2011, 18:08:14
To tam nemám
|
||
Keeehi Profil |
#8 · Zasláno: 20. 5. 2011, 18:51:36
undisputed:
Tak to tam napiš. |
||
Davex Profil |
#9 · Zasláno: 20. 5. 2011, 19:03:28
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 |
#10 · Zasláno: 20. 5. 2011, 19:12:26
Davex:
Řekl bych, že jsi teď trochu někde úplně jinde. Nebo to teda vůbec nechápu, jak to myslíš. |
||
Davex Profil |
#11 · Zasláno: 20. 5. 2011, 19:59:13 · Upravil/a: Davex
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 |
#12 · Zasláno: 21. 5. 2011, 12:27:17
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 |
#13 · Zasláno: 21. 5. 2011, 12:59:55
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 |
#14 · Zasláno: 21. 5. 2011, 13:53:42
V
$_SESSION['nick'] máš uložené pole. Do proměnné $nicko bys měl asi ukládát $_SESSION['nick']['nick'] .
|
||
undisputed Profil |
#15 · Zasláno: 21. 5. 2011, 16:04:39
Áno je to tak, môžete mi vysvetliť to trochu bližšie prečo to tak má byť?
|
||
Keeehi Profil |
#16 · Zasláno: 21. 5. 2011, 16:25:16 · Upravil/a: Keeehi
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 |
#17 · Zasláno: 22. 5. 2011, 09:56:54
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 |
#18 · Zasláno: 22. 5. 2011, 10:00:12
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 |
#19 · Zasláno: 22. 5. 2011, 12:18:20
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 |
#20 · Zasláno: 22. 5. 2011, 13:01:55
A ako má vrátiť pole?
|
||
Keeehi Profil |
#21 · Zasláno: 22. 5. 2011, 13:11:09 · Upravil/a: Keeehi
undisputed:
mysql_result ti vrátí obsah jedné buňky, takž pole nevrací. |
||
undisputed Profil |
#22 · Zasláno: 22. 5. 2011, 13:30:13
čiže to nejde nijak spraviť?
|
||
Keeehi Profil |
#23 · Zasláno: 22. 5. 2011, 13:36:20
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 |
#24 · Zasláno: 22. 5. 2011, 13:37:23
hmm
nerozumiem, ja mám v tabulke údaje o nicku, a keď ich potrebujem len vypísať podľa toho aký nick sa logol |
||
Časová prodleva: 13 let
|
0