PHP Session problem

PHP Session problem

offline
  • Nemanja
  • Web Designer and Developer
  • Pridružio: 24 Jan 2007
  • Poruke: 266

Napisano: 28 Dec 2012 13:33

Pozdrav,

kompletan projekat sam uradio na virtuelnom serveru (wamp) sa identičnom bazom i sve je radilo super.
Naime kada sam taj isti projekat ažurirao na hosting server došlo je do komplikacija. Ni jedna php skripta koju sam uradio ne radi kako treba. Pokazuje kao da je problem u php sesiji.

Greška:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/polesko/public_html/pcleskovac/scripts/login-exec.php:1) in /home/polesko/public_html/pcleskovac/scripts/login-exec.php on line 8 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/polesko/public_html/pcleskovac/scripts/login-exec.php:1) in /home/polesko/public_html/pcleskovac/scripts/login-exec.php on line 8 Warning: Cannot modify header information - headers already sent by (output started at /home/polesko/public_html/pcleskovac/scripts/login-exec.php:1) in /home/polesko/public_html/pcleskovac/scripts/login-exec.php on line 89

Kod stranice za koju pokazuje grešku:
<?php ini_set("display_errors", "1"); error_reporting(E_ALL); var_dump($_POST);    //Start session    session_start();        //Include database connection details    require_once('config.php');        //Array to store validation errors    $errmsg_log = array();        //Validation error flag    $errflag = false;        //Connect to mysql server    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);    if(!$link) {       die('Failed to connect to server: ' . mysql_error());    }        //Select database    $db = mysql_select_db(DB_DATABASE);    if(!$db) {       die("Unable to select database");    }        //Function to sanitize values received from the form. Prevents SQL injection    function clean($str) {       $str = @trim($str);       if(get_magic_quotes_gpc()) {          $str = stripslashes($str);       }       return mysql_real_escape_string($str);    }        //Sanitize the POST values    $username = clean($_POST['username']);    $password = clean($_POST['password']);        //Create query    $qry="SELECT * FROM korisnici WHERE username='$username' AND password='".md5($_POST['password'])."'" or die(mysql_error());    $result=mysql_query($qry);        //Check whether the query was successful or not    if($result) {       if(mysql_num_rows($result) == 1) {          //Login Successful          session_regenerate_id();          $korisnik = mysql_fetch_assoc($result);          $_SESSION['SESS_KORISNIK_ID'] = $korisnik['korisnik_id'];          $_SESSION['SESS_IME'] = $korisnik['ime'];          $_SESSION['SESS_PREZIME'] = $korisnik['prezime'];          $_SESSION['SESS_ADRESA'] = $korisnik['adresa'];          $_SESSION['SESS_GRAD'] = $korisnik['grad'];          $_SESSION['SESS_POSTANSKIBROJ'] = $korisnik['postanskiBroj'];          $_SESSION['SESS_EMAIL'] = $korisnik['email'];          $_SESSION['SESS_LICNAKARTA'] = $korisnik['brLicneKarte'];          $_SESSION['SESS_BRTELEFONA'] = $korisnik['brTelefona'];             header("location: ../index.php");             session_write_close();                    exit();       }else {          //Login failed          $errmsg_log[] = 'Pogrešno korisničko ime ili lozinka!';          $_SESSION['ERRMSG_LOG'] = $errmsg_log;          session_write_close();          header("location: ../index.php");          exit();       }    }else {       die("Query failed");    } ?>

Ako neko zna u čemu je problem molim Vas da mi pomognete.

Dopuna: 28 Dec 2012 13:35

Dopuna:
Na index stranici na kojoj se nalazi login ubacio sam ovaj php kod:
<?php session_start(); if(!isset($_SESSION['SESS_KORISNIK_ID']) || (trim($_SESSION['SESS_KORISNIK_ID']) == '')) {    echo "<form style='color:#ffffff;' id='loginKorisnik' name='loginKorisnik' method='post' action='scripts/login-exec.php'>    Username:<input name='username' type='text' size='10' required />    Password:<input name='password' type='password' size=10' required />    <input type='submit' value='Unesi' hspace='5px' /> / <a href='registration.php'>Registracija</a></form>"; } else { ?> <div style="padding:4px"> <font color="#ffffff" size="3px"> <?php    echo $_SESSION['SESS_IME'];    echo " ";    echo $_SESSION['SESS_PREZIME'];    echo " ";    echo "<a href='scripts/logout.php'> Log out</a> | <a href='korpa.php'> Vaša korpa </a> "; } ?>



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Hunter koliko vidim na prvi pogled u index fajlu ti nisi prikljucio onaj kod odozgo.

Arrow require_once('');
Arrow UTF-8 character format bez BOM
Arrow error_reporting(0)
Arrow white spaces (razmake obrisi)
Arrow postavi session_start() na pocetku koda (top) iznad DOCTYPE

Proveri dali je bilo kakva sesija pre tvog pozivanja pozvana, pa tek onda definisi:

  if (!isset ($_COOKIE[ini_get('session.name')])) {     session_start();   }

Ovakva tema je bila ranije...



offline
  • Nemanja
  • Web Designer and Developer
  • Pridružio: 24 Jan 2007
  • Poruke: 266

A zasto mi je i na index stranici potrebno require_once? Nije mi potrebno da se povezuje sa bazom. Na index stranici mi je potrebno samo da proveri ukoliko je neki korisnik ulogovan, ukoliko jeste da pokaze ime i prezime korisnika, ako nije da pokaze formu za login.
Na koje razmake tacno mislis?
Da li na utf8 tip podataka mislis u mysql bazi?
Meni session start stoji na pocetku, u index stranici. On proverava da li je u sesiji vec uneto nesto. Da li je potrebno da tu na kraju dodam session destroy?

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Napisano: 28 Dec 2012 21:13

Covek pazi ovako, index je prva strana koja se ucitava i odatle sve zapocinje. Bazu, konekciju samo otvaras na jednom mestu a ne na 100. Netreba ti 50 db connection ID-a.
Naravno da mozes da inporujes u drugom fajlu ali ipak se preporucuje da pre session_start importujes fajl koji nasledjuje sessiju. sessija > page1 > page2...

UTF enkodiranje, dodao sam gore da se radi za DOCTYPE a ne za DB...

Neznam sto otezavas sebi, nabacao si gomilu koda zasto jednostavno nisi uradio Klasu za Bazu, klasu za Sesiju i resio problem... Manji kod i citljiviji!!!

Dopuna: 28 Dec 2012 21:14

Jesi proverio White Space ???

Dopuna: 31 Dec 2012 15:11

Jesi resio problem?

offline
  • Pridružio: 15 Feb 2013
  • Poruke: 168

Ni traga ni glasa, da nije kveknuo Smile Ako uradiš session_destroy to će ti obrisati sesiju i neće preneti na drugu stranu...

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3747
  • Gde živiš: 127.0.0.1

Evo problema:

Problem ::<?php

ini_set("display_errors", "1");
error_reporting(E_ALL);
var_dump($_POST);

//Start session
session_start();


Pre startovanja sesije NE SME da postoji bilo kakav output, a ti radis var_dump celog $_POST niza, sto se moglo zakljuciti i citanjem greske:

Citat:Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/polesko/public_html/pcleskovac/scripts/login-exec.php:1) in /home/polesko/public_html/pcleskovac/scripts/login-exec.php on line 8

Ko je trenutno na forumu
 

Ukupno su 932 korisnika na forumu :: 41 registrovanih, 7 sakrivenih i 884 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Aleksandar Tomić, arton, babaroga, cavatina, darcaud, Denaya, Dimitrise93, djboj, Fog of War, h8propaganda, havoc995, Karla, ksyyaj, Kubovac, kubura91, lord sir giga, Marko Marković, MiGac, mikrimaus, milenko crazy north, Milometer, MiroslavD, mkukoleca, mnn2, nemkea71, nenad81, nextyamb, opt1, Panter, robert1979, savaskytec, Shinobi, slonic_tonic, Srle993, StepskiVuk, t84dar, Toper, virked, zillbg, |_MeD_|, šumar bk2