Sesja działa na localhoscie a na serwerze zewnętrznym już nie

0

Mam problem z sesja. Na localhoscie mi działa a na 1and1.pl już nie. Na pierwszej stronie gdzie mam panel logowania zamiast po zalogowaniu przekierować mnie na właściwą stronę, wyskakuje subdomena logout.php. Jak sprawdziłem sesje to na każdej podstronie jest ona na nowo, tak samo jak SID na każdej podstronie jest na nowo. Być może spotkaliście się już z takim problemem?
tak wrzuciłem zmienne mojej sesji na początku, i na localhoscie po poprawnym zalogowaniu logged ustawiany był na true a pod student_id wrzucało id studenta. Na zewnetrznym serwerze to nie działa

                 $_SESSION['logged'] = false;
             $_SESSION['student_id'] = -1; 
0

index.php


include 'config.inc';
db_connect();

// sprawdzamy czy user nie jest przypadkiem zalogowany
if(!$_SESSION['logged']) {
    // jeślii zostanie nacisniety przycisk "Zaloguj"
    if(isset($_POST['index']) && !empty($_POST['password']) && !empty($_POST['index'])) {
        // filtrujemy dane...
        $_POST['index'] = clear($_POST['index']);
        $_POST['password'] = clear($_POST['password']);
        // i kodujemy has?
       // $_POST['password'] = codepass($_POST['password']);

        //sprawdza czy active ustawiony na jeden 1;
        $activ_1=mysql_query("SELECT `student_id` FROM `students` WHERE `student_id` ='{$_POST['index']}' AND  `active`='1' LIMIT 1");
        if(mysql_num_rows($activ_1) == 1 )
        {           
        // sprawdzamy prostym zapytaniem sql czy podane dane s?prawid?we
        $result = mysql_query("SELECT `student_id` FROM `students` WHERE `student_id` = '{$_POST['index']}' AND `student_password` = '{$_POST['password']}' LIMIT 1");
        if(mysql_num_rows($result) > 0) {
            // jesli tak to ustawiamy sesje "logged" na true oraz do sesji "student_id" wstawiamy id usera
            $row = mysql_fetch_assoc($result);
            $_SESSION['logged'] = true;
            $_SESSION['student_id'] = $row['student_id'];
            //header('Location: access_1.php');
            echo '<p>Zostałeś poprawnie zalogowany! Mo?sz teraz przej? na <a href="access_1.php">strone g?wna</a>.</p>';
        } else {
            echo '<p>Podany indeks i/lub hasło jest nieprawidiwe.</p>';
        }
      }else { echo "<p> Niestety nie możesz się zalogować p>";
             }
    }else { echo "<p>Dane niekompletne, sproboj ponownie</p>"; }

    // wy?ietlamy komunikat na zalogowanie si?action="index.php" lub action="index.php"   
    echo '<form method="post" action="index.php" >  
         <p>
            Login:<br>
            <input type="text" value="'.$_POST['index'].'" name="index">
        </p>
        <p>
            Hasło:<br>
            <input type="password" value="'.$_POST['password'].'" name="password">
        </p>
        <p>
            <input type="submit" value="Zaloguj">
        </p>
        <p>
                <a href="register.php">Rejestracja</a>
        </p>
    </form>';
} else {
echo '<p>Jesteś już zalogowany, więc nie możesz się zalogowa ponownie.</p>
        <p>[<a href="access_1.php">Powrót>]</p>';
}

Natomiast w congfig inc mam następujące funkcje dotyczące sesji:


function check_login() {
    if(!$_SESSION['logged']) {
        die('<p>To jest strefa tylko dla uzytkownikow.</p>
        <p>[<a href="index.php">Logowanie</a>] [<a href="register.php">Zarejestruj sie</a>]</p>');
    }
}

// startujemy sesje
session_start();

// jeśli nie ma jeszcze sesji "logged" i "user_id" to wypełniamy je domyślnymi danymi
if(!isset($_SESSION['logged'])) {
    $_SESSION['logged'] = false;
    $_SESSION['student_id'] = -1;

}

Co do var_dumpa:
array(2) {
["logged"]=>
bool(false)
["student_id"]=>
int(-1)
}

co do SID: każda podstrona dostaje nowe sessionid

co do phpinfo():(sorry za tak średni sposób prezentacji)
Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary wddx

Directive Local Value Master Value
session.auto_start Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file /dev/urandom /dev/urandom
session.entropy_length 32 32
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix uploadprogress uploadprogress
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0

0

hmmm jak dla mnie to jesli masz serwer swoj to session.save_path /tmp powinno byc ok, bo jak inni maja dostep to moze byc ten katalog skasowany albo ma zle ustawione prawa dostepu. zmien najwyzej to na: session.save_path /var/lib/php5 bo wyglada na to ze php nie moze zapisac tej sesji.

0

Ja dodam, że masz na stronie dziury:

XSS
SQL Injection

Dwie podstawowe i dwie najbardziej bolesne.

0

Niekoniecznie ma dziury, wywołuje funkcje 'clear' (której tu nie pokazał) na elemencie tablicy POST i wynik przypisuje z powrotem do elementu, oczywiscie czytelniej bylyby wynik przypisac do nowych zmiennych i z nich korzystac w dalszej czesci kodu.

0

@lhp - fakt, nie zauważyłem. ale nadpisywanie tych zmiennych to głupi pomysł ;) wystarczy dwa zapytania z tą samą zmienną..

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0