[ nordica @ 21.03.2007. 17:45 ] @
Imam kod kojim koristim za proveru logovanja korisnika, medjutim ne kreira mi se sesija iz prvog puta i nije mi jasno zasto. Verovatno je previd ili sam negde nesto bas zeznuo.
Code:

<?php 
  session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Administracija</title>
</head>

<body>
<?php 

    
function prikaziFormu() { ?>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="logForm">
            <table width="300px">
              <tr>
                <td>Korisničko ime:</td>
                <td><input name="username" type="text" class="textbox" id="username"></td>
              </tr>
              <tr>
                <td>Šifra:</td>
                <td><input name="pass" type="password" class="textbox" id="pass"></td>
              </tr>
              <tr>
                <td colspan="2">
                    <INPUT TYPE="HIDDEN" NAME="akcija" VALUE="login">
                    <input name="Submit" type="submit" value="prijavi se" class="button">
                </td>
              </tr>
            </table>
        </form><?php
}//end prikaziFormu

function provera() {
  
  $username = $_POST['username'];
  $pass = $_POST['pass'];
  //povezivanje na bazu
  $result = mysql_query("SELECT userpass FROM user WHERE username='$username'",$conn);
  if (!$result) die ("Došlo je do greške.");
  $query_data = mysql_fetch_row($result);
  if ($query_data[0]==$pass){//ako uneshena sifra odgovara sifri u bazi
    $_SESSION['username'] = $_POST['username'];
    return 1;
  }//end if
  else{
    return 2; 
  }
}//kraj funckije provera()
    
?>
<div id="wrapper">
<div id="header">

   <div id="topmenu"><h1>Administracija</h1></div>
 </div>
 <div id="body2">
   <div id="innerbody">
     <div id="leftcol"><?php
        if (isset($_POST['akcija']) && $_POST['akcija']=="login") {
            $_SESSION['ulogovan'] = provera();
        }
          if (isset($_SESSION['ulogovan']) && $_SESSION['ulogovan']==1){
            include ('menu.php');
        }            
        ?>     
    </div><!--end leftcol-->
    <div id="centercol">
     <div id="centercontent2"><?php 
         if (isset($_SESSION['ulogovan']) && $_SESSION['ulogovan']==1){
            echo '<p>Izaberite opciju iz menija sa leve strane.</p>';
        }
        else {
            prikaziFormu();
            if (isset($_SESSION['ulogovan']) && $_SESSION['ulogovan']==2)
                echo "<p>Greška prilikom pokušaja pristupa. Molimo Vas da ponovite proceduru.</p>";
        }
     ?>
     </div><!--end centercontent2-->
    </div><!--end centercol-->
    <div class="clear"></div>
    </div><?php //kraj innerbody ?>
  </div><!--end body2-->
</div>
</body>
</html>


Naime sta se desava. Proveri mi user i pass i ako je ok, on mi prikazi meni i poruku da izaberem iz menija sta zelim. medjutim, ako kliknem na bilo koji link i udjem na stranu gde se provera vrednost $_SESSION['ulogovan'] da li je 1 dobijam poruku da nisam ulogovan. proveravajuci ustanovio sam da sesija nije ni kreirana. ako se onda ulogujem ponovo onda je sve u redu. znaci, svaki put moram da se logujem 2 puta.

sta gresim???
[ Nemanja Avramović @ 21.03.2007. 22:18 ] @
Jel se to dešava na više servera ili samo na tom? Imao sam isti problem sa jednom skriptom, ali samo na nekim serverima...
[ afwt @ 21.03.2007. 22:33 ] @
Jesi proverio jel ti rade sesije? Mozda ne sacuvava sesije na sistem, pa ti na svaki page-load tera novu sesiju...

Takodje, jel ti ukljucen error_reporting(E_ALL);?
[ nordica @ 22.03.2007. 07:25 ] @
imam problem sa ovom skriptom na svim serverima. u lokalu imam i IIS i Apache, a i kada postavim na net takodje ne radi.
Elem, sesije rade jer mi rade druge skripte. Ono sto mi je najcudnije je to sto imam gotovo istu skriptu koju sam radio za neki drugi sajt i tamo sve radi bez problema.

Ukljucio sam E_ALL i evo sta mi javlja:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at D:\My Documents\My Webs\proba\admin\index.php:1) in D:\My Documents\My Webs\proba\admin\index.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at D:\My Documents\My Webs\proba\admin\index.php:1) in D:\My Documents\My Webs\proba\admin\index.php on line 2

samo da napomenem da pre session_start(); nema nikakvog html koga. citao sam negde, sada kao za inat ne znam gde, da moze da se desi da se pre ove naredbe nadje neki kod koji ne moze da se vidi iz editora, a pravi problem, pa se brise na neki sumanuti nacin. da nije to problem?
[ dakipro @ 22.03.2007. 07:36 ] @
Jel to bese neki DOM Signature? Potrazi forum, skoro je bilo reci o tome, a mislim da ima i u top temama.
[ nordica @ 22.03.2007. 07:56 ] @
da, glupi BOM signature me je izludjivao.
hvala svima.