Pomoc sa funkcijom

Ovako imam funkciju s kojom hocu izvuc username iz database

prvo sto mi ne radi ne vraca mi username kako bi trebo u varijablu $user_id tako da mogu koristi na drugim stranicama npr. treba mi kad se logiram ode mi na logged.php i tu imam sljedeci kod

ovo init.php tu su mi funkcije ali ovaj dio mi ne radi echo 'Welcome back : ’ . user($user_id) . ’

baca mi greske :

Notice: Undefined variable: user_id in C:\xampp\htdocs\cms2\logged.php on line 7

Notice: Undefined variable: username in C:\xampp\htdocs\cms2\core\functions\func.php on line 38

7 linija je echo 'Welcome back : ’ . user($user_id) . ’

38 linija je $username = sanitize($username);

Ne razumijem baš tvoj kod ti tražiš da ti funkcija ispisuje username, a predaješ joj id ili što već. Ajde pokušaj ovako

Gle sto ja ocu je da samo pozovem funckiju gdje hocu npr.

a ne da moram sessijsku varijablu pozivat

ovo je init.php
tako da mi ne treba session_start();

a evo i sve funkcije koje koristim

sada neznam jel problem u login.php kad pokrenem sessiju evo login.php

mozda ovdje grijesim

A zašto ti je problem pozvati sesiju? Kratko kao i poziv funkcije.

Ovdje ispituješ istu stvar dva puta (isset($_SESSION[‘user_id’]) === true && !empty($_SESSION[‘user_id’]) === true)

Pokušaj u sesiju zapisati stvarni id usera ili username.

Gle ja sam to zamislio ovako da izgleda

i na kraju samo da pozovem user() i on mi izbaci username tj.

a ne da moram sessijsku varijablu pozivat

Ili bi mogo spremit ko sto si reko u sessiju stvarni user_id iz baze i onda usporedit sa necim :slight_smile:

Nekoliko grešaka u funkciji:

1.)  function user($user_id) { 
2.)    
3.)     $username = sanitize($username);
4.)   
5.)    $query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'"); 
6.)    return (mysql_result($query, 0) == 1) ? $user_id : false; 
7.)  }

Linija 3. - $username u zagradi nije difiniran
Linija 5. - nije greška, query daje count(user_id), odnosno zbroj rezultata prema nekom zahtijevu

Ispravno bi bilo sljedeće:

function user($user_id) { 

    $username=""; 

    $query = mysql_query("SELECT username FROM users WHERE user_id=".$user_id); 
    $result = mysql_fetch_row($query);
    $username=$result[0];

    return ($username!="" ? $username : false); 
}  

U gornjem slučaju, ako je pod user_id 5 zavedeno username “Pero”, kada napraviš ovo:

    echo user(5);

Ispisati će: Pero

Nadogradnjom funkcije možeš sve ostalo što si želio…

Eventualno, možeš koristeći session ili cookie totalno izbaciti zvanje funkcije user(user_id), primjerice:

function user() { 

    $user_id=$_SESSION["userid"]; // ili cookie, sto ti odgovara vise
    $username=""; 

    $query = mysql_query("SELECT username FROM users WHERE user_id=".$user_id); 
    $result = mysql_fetch_row($query);
    $username=$result[0];
    return ($username!="" ? $username : false); 
} 

Pa kad napraviš:

    echo "Korisnik: ".user();

Pa ako se user_id prilikom logiranja stavio u sesiju ili u cookie, tada će ispisati username od tog user_id-a…

A kako onda trebam postavit session kad se korisnik logira u login.php

ili drugacije jer mi ovako nist ne vraca funkcija koju si napiso

$_SESSION[“userid”]="1"
ako u funkciji koristiš
$user_id=$_SESSION[“userid”];

ili

$_SESSION[“user_id”]="1"
ako u funkciji koristiš
$user_id=$_SESSION[“user_id”];

Ne zaboravi da na stranicu gdje postavljaš session ($_SESSION[“userid”]=“1”) i na stranici gdje se nalazi funkcija (function user(){…}) OBAVEZNO u vrh staviš session_start();
session_start() mora biti postavljen prije bilo kakvog outputa (dakle i prije tagova), zato se stavlja na vrh stranice, odnosno da bude među prvim funkcijama (a najbolje prva) koje se pozivaju.
Otprilike bi trebalo to izgledat ovako:

<?php 

  session_start();

  // sav ostali php koji se vrti prije...

?>

<html>

  <head>
     <!-- header tagovi -->

  </head>

  <body>
     <!-- body dokumenta -->

  </body>

</html>

Gle ovako imam

index.php

tu mi je na vrhu

na samom vrhu

u init.php mi se nalazi na vrhu

znaci taj init.php di god includam imam pokrenitu sessiju, povezivanje na bazu, i funkcije dakle to nije problem.
u logged.php tu sam na vrh includo ovo i radi mi funkcija logged() znaci da je sve ok, i logiranje i sve to, samo mi to nece da radi kad logiram korisnika nece prikazat username probo sam i ovo sto si mi dao sad.

evo i logged.php

a ovo je u login.php kad pokrecem sessiju $_SESSION[‘user_id’] = 1;

Ček malo, pa di ti definiraš varijablu $username? Koliko sam ja shvatio iz tvog koda, jedino gdje je ta varijabla definirana je login.php. Nakon toga ide redirekt (varijable se unišavaju) i sada u logged.php koristiš funkciju user koja koristi varijablu $username, a te varijable nema.

ovako evo function.php da stvar bude jasnija

i ove funkcije koristim samo za provjeru login skripte, ali sad mi treba da nakon svih provjera kad logiram korisnika imam funkciju koja ce uzet username i stavit ga u sessiju i prikazati di hocu sa user();

Ajde pokušaj ovako

Notice: Undefined index: username in C:\xampp\htdocs\cms2\core\functions\func.php on line 49

nevalja ni to

evo probo sam ovako

i sad mi ispisuje username od prvog korisnika i kad se logiram s drugim ili trecim korisnickim imenom ispisuje mi od prvog