Autor Zpráva
undisputed
Profil
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
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
undisputed:
$vyslee = mysql_query("select drevo_uroven from sklad where nick = '$h'"); 
$radoe = mysql_fetch_assoc ($vyslee); 
$no = $radoe['sklad_uroven'];
undisputed
Profil
Chyba nepozornosti,najprv som chcel drevo,ale do db som si spravil sklad tak som to zabudol opraviť :Ddiky za opravu.
undisputed
Profil
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
Pomôže mi niekto?
Tori
Profil
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);
a sledovat, kde se obsah session změnil.
undisputed
Profil
No len práveže tam sa to nikde neprepisuje čisto html kód a vypís údajov pomocou while nič iné
Tori
Profil
undisputed:
A ta podmínka na konci skriptu? Není v ní omylem = místo ==?
undisputed
Profil
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
A v podmienke je len ak premenna a je rovná premennej b tak sa update-tne db
Tori
Profil
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
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
undisputed:
A jak ten nick ukládáte do session? Chyba by mohla vznikat už tam.
undisputed
Profil
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;
je to len kúsok toho kódu ale to je vporiadku
undisputed
Profil
Vie niekto kde je chyba?
jenikkozak
Profil
Ve výše uvedeném kódu [#15] na prvních dvou řádkách bereš cosi jako pole, na třetím řádku jako obyčejnou proměnnou.

A dále je rozdíl mezi
$_SESSION["nick"] z [#15] a $_SESSION['nick']['nick'] z [#13].
undisputed
Profil
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']; 
tak by mi ukázalo "Array" ked už mám
 $_SESSION['nick']['nick']; 
tak mi vypíše už môj nick ale po obnovení stránky zrazu mi vypíše len prvé písmeno môjho nicku,kde je chyba?
Alphard
Profil
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
SESSION[user] ?asi nie keď tam takú nemám spravenu
undisputed
Profil
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;

?>
tak namiesto toho aby mi vypísalo ten nick tak mi vypíše prvé písmeno toho nicku,
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
// 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
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
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
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");
}
Nepoužívejte session_register a podobné funkce zároveň se $_SESSION - buď jedno nebo druhé (přičemž se doporučuje používat pole $_SESSION).
undisputed
Profil
Aha,ďakujem zajtra skúsim dnes už nestíham
undisputed
Profil
No neviem niekde musí byť vtom vašom skripte chyba lebo nefunguje pretože ma to nepresune nikam ostanem stať na tom skripte

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