Autor Zpráva
filda15
Profil *
Ahoj, mám definovanou proměnou $_SESSION['jmeno'] a potřebuju jí vypsat zde: $tbl_name="test_jmeno uzivatelel"
Jak na to, aby vše proběhlo jak má? Díky všem za rady.


[#1] filda15 místo jmeno uzivatele promenna session jmeno...
Darkry
Profil
$tbl_name = "test_jmeno ".$_SESSION['jmeno'];
V čem je problém?
filda15
Profil *
takto mi to nefunguje...:-(
Again
Profil
filda15:
Děkujeme za vyčerpávající popis problému - máš danou SESSION opravdu zaregistrovanou? Při výpisu proměnné $tbl_name nastane co?
filda15
Profil *
na stránce mám výpis z databáze, session mi to při zápisu: <?php echo $_SESSION['jmeno'] ?> vypíše. Zobrazuje se mi tam chyba: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in line 73....
<?php 
while($rows=mysql_fetch_array($result)){ 
?>
Again
Profil
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in line 73, značí špatně napsaný dotaz do databáze ...
Pokud ti <?php echo $_SESSION['jmeno'] ?> vypíše dané SESSION, tak jaký je problém vytvořit řetězec a přiřadit ho k proměnné $tbl_name ?
filda15
Profil *
to mi zase napíše tohle: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING($tbl_name="test_<?php echo $_SESSION['jmeno'] ?>"; // Table name), ale když zadánm název databáze, tak jak je v mysql, tak to běží bez problémů...
jenikkozak
Profil
$tbl_name="test_<?php echo $_SESSION['jmeno'] ?>"; // Table name
To je samozřejmě blbost. Mícháš nevhodným způsobem přiřazení do proměnné, výpis a otevření dalšího bloku php kódu.
Můžeš sem napsat větší část svého nefunkčního skriptu? (Myšleno od uložení hodnoty do proměnné k jejímu použití.)
filda15
Profil *
V loginu se to uklada takto:
<?php 
require_once dirname(__FILE__)."/config.php";

if (!session_is_registered("jmeno"))
    session_register("jmeno");

if (!session_is_registered("heslo"))
    session_register("heslo");
    
if (!session_is_registered("prava"))
    session_register("prava");

if (isset($_POST['submit'])) {

    $select = mysql_query("SELECT `jmeno`,`heslo`,`prava` FROM `uzivatele` WHERE `jmeno`='".addslashes($_POST['jmeno'])."' AND `heslo`='".md5(trim($_POST['heslo']))."'") or die (mysql_error());
    $udaje = mysql_fetch_assoc($select);

    if (mysql_num_rows($select)==1) { # pokud je zadano platne jmeno a heslo
        session_regenerate_id(); # osetreni session stealing
        $_SESSION['jmeno'] = $_POST['jmeno']; # nastavime sessiony
        $_SESSION['heslo'] = md5($_POST['heslo']);
        $_SESSION['prava'] = $udaje['prava'];
        $_SESSION['email'] = $udaje['email'];
        header("Location: ./admin/index.php");
    } else { # pokud je neco spatne, zasleme chybovy kod
        header("Location: ./login.php?code=401", 401);
    } 
    
}

if (isset($_GET['logout'])) { # odhlasime se
    unset($_SESSION['jmeno']);
    unset($_SESSION['heslo']);
    unset($_SESSION['prava']);
    session_destroy();
}

isset($_GET['code']) && $_GET['code']=="401" ? # pouze titulek
   $title = "Neautorizovaný přístup (Chyba 401)" :
   $title = "Přihlášení";
?>
a v každem souboru je tento začátek pro autorizaci:
<?php
require_once dirname(__FILE__)."/../config.php";

function unauth_header() { # pouze presmerovani
    header("Location: ../login.php?code=401", 401);
    die();
}

function check_user() { # kontrola uzivatele
    if ( isset($_SESSION['jmeno']) && isset($_SESSION['heslo']) && isset($_SESSION['prava']) ) {
        $select = mysql_query("SELECT `id` FROM `uzivatele` WHERE `jmeno`='{$_SESSION['jmeno']}' AND `heslo`='{$_SESSION['heslo']}'") or die (mysql_error());
        $udaje = mysql_fetch_assoc($select);
        if (mysql_num_rows($select)!=1) { unauth_header(); }
    } else {
        unauth_header();
    }
} 

check_user();


?>
jenikkozak
Profil
filda15:
A kde je v tom skriptu ten tvůj cyklus while, ve kterém se projevila chyba, kde máš dotaz, do kterého chceš vkládat hodnotu ze sessiony? A proč jsi sem vložil úplně jiný skript, než který jsem žádal? Chci ten, ve kterém máš chybu, kterou právě řešíš.

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: