| Autor | Zpráva | ||
|---|---|---|---|
| undisputed Profil |
#1 · Zasláno: 31. 5. 2011, 19:32:04
Stále tomu nerozumiem,niekto sa na moju stránku prihlási,vypíše mu to "ahoj a jeho nick"následne sa presunem na stránku kde je tento kód:
<?php
session_start();
include 'connect.php';
$h=$_SESSION['nick']['nick'];
echo $h;
$vyslee = mysql_query("select drevo_uroven from sklad where nick = '$h'"); $radoe = mysql_fetch_assoc ($vyslee); $no = $radoe['sklad_uroven'];
echo $no;
?>
Výsledok-skúšal som len taký virtuálny "sklad" na serveri-výsledom skriptu má byť vypísanie nicku-to ide,a vypísanie čísla z db -to nie nerozumiem prečo kto mi poradí?podotykam že session je registrovaná(logicky ked mi vypíše nick)a aj súbor connect.php je vporiadku. Diky za rady. |
||
| Spectator Profil |
#2 · Zasláno: 31. 5. 2011, 19:41:24
Zkus si ten SQL dotaz v nějakém phpMyadminu jestli to bere správný hodnoty z db.
Možná jsem slepej, ale nějak taky nevidim, co nefunguje. |
||
| Tori Profil |
#3 · Zasláno: 31. 5. 2011, 19:45:41
undisputed:
$vyslee = mysql_query("select drevo_uroven from sklad where nick = '$h'");
$radoe = mysql_fetch_assoc ($vyslee);
$no = $radoe['sklad_uroven'];
|
||
| undisputed Profil |
#4 · Zasláno: 31. 5. 2011, 19:50:26
Chyba nepozornosti,najprv som chcel drevo,ale do db som si spravil sklad tak som to zabudol opraviť :Ddiky za opravu.
|
||
| undisputed Profil |
#5 · Zasláno: 1. 6. 2011, 15:25:55 · Upravil/a: undisputed
Mám s tým ďalší problém viď kód,session sa uloží prejdem na stránku kde je tento kód
<?php session_start(); include "connect.php"; $id=$_GET['id']; $nick=$_SESSION['nick']['nick']; echo $nick; ?> +ostatné je len html kód skoro(na konci ešte php podmienka ak je nick taký taký ukáže to a to) no presunem sa na tú stránku vypíše mi môj nick(funguje)obnovím stránku a zrazu mi vypíše "a" (do session je zrazu uložené a) neviete prečo?nedáme mi to zmysel :D |
||
| undisputed Profil |
#6 · Zasláno: 1. 6. 2011, 19:06:05
Pomôže mi niekto?
|
||
| Tori Profil |
#7 · Zasláno: 1. 6. 2011, 20:00:01
V kódu v [#1] ani [#5] se nikde nepřepisuje $_SESSION. Pokud se obsah session změní až po obnovení stránky, tak zřejmě někde dál v kódu ukládáte něco do $_SESSION. Buď si můžete v editoru vyhledat všechny výskyty $_SESSION v chybovém skriptu a zkontrolovat, jestli se někde nepřepisují, anebo na několik míst ve skriptu přidat
echo "řádek č. ".__LINE__.", session: ".print_r($_SESSION,1); |
||
| undisputed Profil |
#8 · Zasláno: 1. 6. 2011, 20:10:48
No len práveže tam sa to nikde neprepisuje čisto html kód a vypís údajov pomocou while nič iné
|
||
| Tori Profil |
#9 · Zasláno: 1. 6. 2011, 20:17:05
undisputed:
A ta podmínka na konci skriptu? Není v ní omylem = místo ==? |
||
| undisputed Profil |
#10 · Zasláno: 1. 6. 2011, 20:23:03
No prišiel som na jednu vec,ale nerozumiem ako je to možné naozaj,v session som mal uložené nick admin obnovil som stránku a zrazu je tam "a" potom som si do session uložil nick "peter" ,obnovil stránku a zrazu mi vypísalo "p" ?to ako začiatočné písmeno vždy ako prečo?nerozumiem
|
||
| undisputed Profil |
#11 · Zasláno: 1. 6. 2011, 20:24:15
A v podmienke je len ak premenna a je rovná premennej b tak sa update-tne db
|
||
| Tori Profil |
#12 · Zasláno: 1. 6. 2011, 20:41:45 · Upravil/a: Tori
Taková zajímavá věc, možná vás to přivede na chybu:
$a['nick'] = "asdfgh";
echo $a['nick']; // vypíše "asdfgh"
echo $a['nick']['nick']; // vypíše "a"
// edit:
$a = 'asdfgghjj';
// V případě, že se k řetězci přistupuje jako k poli, se zřejmě nepoužije přímo zadaný zápis:
$a['neco'];
// ..ale požadovaný index se nejdřív převede na celé číslo (což je celkem logické).
$a[intval('neco')]; => $a[0] => "a" |
||
| undisputed Profil |
#13 · Zasláno: 1. 6. 2011, 20:53:38
Nie nie,všade je
$nick=$_SESSION['nick']['nick']; Ale nech sa prihlasim pod akýmkoľvek nickom vždy po obnove stránky mi to uloží do session len prvé písmeno,ale dal som to tak aj na ďalšie 2stránky na skúšku a výsledok je presne taký istý :(som bezradný z toho už:(nevie niekto pomôcť?neviem možno nastaveniami servera alebo už neviem:( |
||
| Tori Profil |
#14 · Zasláno: 1. 6. 2011, 20:57:22
undisputed:
A jak ten nick ukládáte do session? Chyba by mohla vznikat už tam. |
||
| undisputed Profil |
#15 · Zasláno: 1. 6. 2011, 21:06:03
Tam je to dobre 100%
Len overujem či heslo a nick je dobre a potom sa to uloží tu je kúsok toho
$cosi = mysql_fetch_array($result);
if ($cosi['heslo'] == ($_POST['heslo'])){
$_SESSION["nick"] = $cosi;
|
||
| undisputed Profil |
#16 · Zasláno: 2. 6. 2011, 18:52:50
Vie niekto kde je chyba?
|
||
| jenikkozak Profil |
#17 · Zasláno: 2. 6. 2011, 20:30:00 · Upravil/a: jenikkozak
|
||
| undisputed Profil |
#18 · Zasláno: 3. 6. 2011, 17:04:33
V [#15] to funguje všetko dobre z db sa vybere nick a zmení sa to na premennu a následne tá premenná sa uloží do session,
A v [#13] keby som dal $_SESSION['nick']; $_SESSION['nick']['nick']; |
||
| Alphard Profil |
#19 · Zasláno: 4. 6. 2011, 10:54:21
Dejte si do kódu pár výpisů
print_r($_SESSION);, zjistíte, jak tam vlastně máte ty klíče a jak se mění hodnoty
„$_SESSION['nick']['nick'];“ Je v tom strašný zmatek, nebylo by lepší pojmenovat to $_SESSION['user']['nick']?
|
||
| undisputed Profil |
#20 · Zasláno: 4. 6. 2011, 15:32:07
SESSION[user] ?asi nie keď tam takú nemám spravenu
|
||
| undisputed Profil |
#21 · Zasláno: 4. 6. 2011, 15:55:54
No takže spravil som to najprimitivnejšie ako to viem:
Prvý kód(kde sa registruje session)
<?php
session_start();
echo "<html><body>";
echo "<form action='#' method='post'><input type='text' name='nick'><input type='submit' value='ok'></form>";
if(!empty($_POST['nick'])){
$nick=$_POST['nick'];
// Takze sessny fungujou
}
$_SESSION["nick"] = $nick;
session_register("nick");
echo $_SESSION["nick"];
?>
</body>
</html>
Tam keď obnovím stránku tak mi stale ukazuje ten nick čo si zaregistrujem ale akonáhle sa presunem na skript číslo 2: <?php session_start(); $nick=$_SESSION['nick']['nick']; echo $nick; ?> Toto bolo posledná vec ako som to mohol otestovať nefunguje nefunguje nefunguje:(prečo?serverom to nieje skúsil som to aj na inom hostingu.diky za odpoveď |
||
| Tori Profil |
#22 · Zasláno: 4. 6. 2011, 16:05:40
// První skript:
session_start();
echo "<html><body>";
echo "<form action='#' method='post'><input type='text' name='nick'><input type='submit' value='ok'></form>";
if(!empty($_POST['nick'])){
// Tohle musí být ještě uvnitř podmínky, jinak si pokaždé, pokud nebude
// odeslaný formulář přepíšete SESSION[nick] na prázdný řetězec.
$_SESSION["nick"] = $_POST['nick'];
}
session_register("nick"); // Tenhle řádek vyhoďte úplně.
echo $_SESSION["nick"];
// Druhý skript:
session_start();
$nick = $_SESSION['nick']; // V předchozím skriptu ukládáte do SESSION[nick] a tady jste četl ze SESSION[nick][nick]: Vizte znova #12.
echo $nick;
|
||
| undisputed Profil |
#23 · Zasláno: 4. 6. 2011, 16:15:47
Zaujímavé lebo ten prvý skript som mal tak isto ako ste napísala:)a iba vtom druhom som to upravil a funguje to ale ked som to predtým tak spravil mi vypísalo Array,
Nechápem..,už to len musím dať do toho prihlasovacieho skriptu |
||
| undisputed Profil |
#24 · Zasláno: 4. 6. 2011, 17:00:39
Tori?
A ako to tuto upraviť?
<?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'])){
$nick=$cosi;
session_register('nick');
$_SESSION['nick'] = $cosi;
header("Location:main.php");
}
else
{
header("Location:index.php");
}
}
else
{
header("Location:index.php");
}
?>Ďakujem |
||
| Tori Profil |
#25 · Zasláno: 4. 6. 2011, 17:38:26 · Upravil/a: Tori
session_start();
if (isset($_POST['nick']) && isset($_POST['heslo'])){
include "connect.php";
// Ověření hesla i nicku může být v jednom dotazu + ochrana proti SQL injection
$query = "SELECT * FROM uzivatelia WHERE nick='" . mysql_real_escape_string($_POST['nick'])
. "' AND heslo = '" . mysql_real_escape_string($_POST['heslo']) . "'";
$result = mysql_query($query, $link);
// Tyhle dva řádky jsou jen pro ladění na localhostu! Na ostrém webu je zakomentujte.
if (mysql_error())
die("Chyba sql dotazu: " . mysql_error());
if (mysql_num_rows($result) > 0) {
$user = mysql_fetch_assoc($result); // trochu smysluplnější název proměnné než $cosi
$_SESSION['nick'] = $user['nick'];
header("Location:main.php");
}
else
{
// Pokud dotaz nevráti žádné řádky výsledku, bylo špatné buď heslo nebo nick.
// Nějak byste mohl v index.php rozlišit, jestli uživatel přišel poprvé, anebo se vrátil po neúspěšném přihlášení, např. tímhle:
// v index.php by pak bylo: if (isset($_GET['chybaPrihlaseni'])) ...
header("Location:index.php?chybaPrihlaseni=1");
}
}
else
{
header("Location:index.php");
} |
||
| undisputed Profil |
#26 · Zasláno: 4. 6. 2011, 18:08:08
Aha,ďakujem zajtra skúsim dnes už nestíham
|
||
| undisputed Profil |
#27 · Zasláno: 4. 6. 2011, 20:50:33
No neviem niekde musí byť vtom vašom skripte chyba lebo nefunguje pretože ma to nepresune nikam ostanem stať na tom skripte
|
||
|
Časová prodleva: 15 let
|
|||
0