2014-09-09 3 views
-1

Я сделал сеанс php, и у меня проблемы с его отображением.php session, отображение значения не работает

На самом деле вот весь код (но переменные на словенском языке, и его слишком много, чтобы изменить каждый из них, так что извините за это).

Мой login.php файл:

<?php 
session_start(); 
if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) { 
header ("Location: index1.php"); 
} 

if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    $uname = $_POST['uporabnisko1']; 
    $pword = $_POST['geslo1']; 

    $_SESSION['uporabniskoime1'] = $_POST['uporabnisko1']; 

    $user_name = "root"; 
    $pass_word = ""; 
    $database = "spletnabaza"; 
    $server = "127.0.0.1"; 

    $db_handle = mysql_connect($server, $user_name, $pass_word); 
    $db_found = mysql_select_db($database, $db_handle); 

    if ($db_found) { 

     $SQL = "SELECT * FROM uporabnik WHERE uporabnisko = '$_POST[uporabnisko1]' AND geslo = '$_POST[geslo1]'"; 
     $izpisImena ="SELECT '$ime' FROM uporabnik WHERE uporabnisko = '$_POST[uporabnisko1]' AND geslo = '$_POST[geslo1]'"; 
     $_SESSION['imeuporabnika'] = $izpisImena; 
     $result = mysql_query($SQL); 
     $num_rows = mysql_num_rows($result); 

     if ($result) { 
      if ($num_rows > 0) { 
       session_start(); 
       $_SESSION['login'] = "1"; 
       header ("Location: Stranzaindexom.php"); 
      } 
      else { 
       session_start(); 
       $_SESSION['login'] = ""; 
       header ("Location: index1.php"); 
      } 
     } 
     else { 
      $errorMessage = "Napaka pri vpisu"; 
     } 

    mysql_close($db_handle); 

    } 

    else { 
     $errorMessage = "Napaka pri vpisu"; 
    } 

} 


?> 

Мой signup.php файл:

<?php 
session_start(); 
if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) { 
header ("Location: index1.php"); 
} 

$uname = ""; 
$pword = ""; 
$errorMessage = ""; 
$num_rows = 0; 

if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 

    $name1 = $_POST['ime']; 
    $surname = $_POST['priimek']; 
    $uname = $_POST['uporabnisko']; 
    $pword = $_POST['geslo']; 

    $_SESSION['geslo1'] = $_POST['geslo']; 
    $_SESSION['uporabniskoime'] = $_POST['uporabnisko']; 

    $uLength = strlen($uname); 
    $pLength = strlen($pword); 

    if ($uLength >= 3 && $uLength <= 20) { 
     $errorMessage = ""; 
    } 
    else { 
     $errorMessage = $errorMessage . "Uporabniško ime mora biti dolgo od 3 do 20 znakov". "<BR>"; 
    } 

    if ($pLength >= 3 && $pLength <= 16) { 
     $errorMessage = ""; 
    } 
    else { 
     $errorMessage = $errorMessage . "Geslo mora biti dolgo od 3 do 20 znakov" . "<BR>"; 
    } 

    if ($errorMessage == "") { 

    $user_name = "root"; 
    $pass_word = ""; 
    $database = "spletnabaza"; 
    $server = "127.0.0.1"; 

    $db_handle = mysql_connect($server, $user_name, $pass_word); 
    $db_found = mysql_select_db($database, $db_handle); 

    if ($db_found) { 

     $SQL = "SELECT * FROM uporabnik WHERE uporabnisko = $uname"; 
     $result = mysql_query($SQL); 
     $num_rows = mysql_num_rows($result); 

     if ($num_rows > 0) { 
      $errorMessage = "To uporabnisko ime že obstaja!"; 
     }  
     else { 

      $SQL = "INSERT INTO uporabnik (id, ime, priimek, uporabnisko, geslo) VALUES (NULL, '$_POST[ime]', '$_POST[priimek]', '$_POST[uporabnisko]', '$_POST[geslo]')"; 

      $result = mysql_query($SQL); 

      mysql_close($db_handle); 

      session_start(); 
      $_SESSION['login'] = "1"; 

      header ("Location: ../index1.php"); 
     } 
    } 
    else { 
     $errorMessage = "Database Not Found"; 
    } 
    } 
} 
?> 

И чем мой файл в Stranzaindexom.php, где я хочу, чтобы отобразить переменные: На вершине:

<?php 
session_start(); 

?> 

В середине: Pozdravljen/-a:

<?php 
    echo $_SESSION['imeuporabnika']; 
?> 

И когда я вхожу в моей странице с корнем я получить напечатал:

Pozdravljen/-a: SELECT 'IME' FROM uporabnik WHERE uporabnisko = 'корень' И Geslo = ' '

Инспектор Поздравль/-а, профессор. (профессор - имя пользователя root)

Я что-то пропустил?

+0

Где вы используете ['session_start();'] (http://php.net/manual/en/function.session-start.php)? –

+0

В начале каждого .php-файла –

+0

Не могли бы вы еще добавить свой код? Теперь мы можем только догадываться, что у вас есть, а что нет. –

ответ

0

Перед выполнением любого из вышеуказанных запросов проверьте ввод пользователя (переменные $ _POST). Это можно сделать легко с помощью функции mysql_real_escape_string. Вы также можете использовать функции strip_tags() и trim(). Например:

$name = mysql_real_escape_string($_POST['name']); 

mysql_ * функции устарели, я бы порекомендовал вам начать использовать mysqli или, еще лучше, на мой взгляд, PDO. Кроме того, ваши запросы не будет работать, вот рабочий пример:

$query = "SELECT `id` FROM `users` WHERE `name` = '{$name}'"; 

Не хранить любую сессию до фактического Логгина или регистрации. Сделайте это после того, как пользователь успешно зарегистрировался или вошел в систему. Также не храните ценные переменные, такие как пароль, просто для пользователя user_id вам будет достаточно. Вы можете легко проверить, если пользователь вошел в систему:

if(isset($_SESSION['user_id'])) { 
    //User is logged in 
} else { 
    //User is not logged in 
} 

Кроме того, только подключение к БД один раз и использовать session_start() один раз в сценарий. Лучше было бы сделать это в файле с именем config.php. Тогда просто сделать это в начале ваших скриптов:

require_once('config.php'); 

Есть несколько вещей, но это даст вам хороший старт и достаточно, чтобы работать над :-). Удачи.

+0

Спасибо, я работаю. –

Смежные вопросы