2015-01-06 2 views
1

извините за довольно бесполезное название .. не был уверен, как кратко описать его сам.Запуск SQL при создании сеанса и перенаправление через php

Запросы

<?php 
// Parse the log in form if the user has filled it out and pressed "Log In" 
if (isset($_POST["username"]) && isset($_POST["password"])) { 

    $username = $_POST["username"]; // filter everything but numbers and letters 
    $password = $_POST["password"]; // filter everything but numbers and letters 
    // Connect to the MySQL database 
    include "dbconnect.php"; 
    $sql = mysql_query("SELECT username, admin FROM logins WHERE username='$username' AND password='$password' LIMIT 1"); // query the person 
    // ------- MAKE SURE PERSON EXISTS IN DATABASE --------- 
    $existCount = mysql_num_rows($sql); // count the row nums 
    if ($existCount == 1) { // evaluate the count 
     while($row = mysql_fetch_array($sql)){ 
      $username = $row["username"]; 
      $admin = $row["admin"]; 

     } 
     if ($admin ==2) { 
      $coach = $_POST["username"]; // filter everything but numbers and letters 
      $password = $_POST["password"]; // filter everything but numbers and letters 
      $sql = mysql_query("SELECT id, activity FROM coaches WHERE username='$coach' AND password='$password' LIMIT 1"); 
      while($row = mysql_fetch_array($sql)){ 
       $id = $row["id"]; 
       $activity = $row["activity"]; 
      } 
      $_SESSION["id"] = $id; 
      $_SESSION["coach"] = $coach; 
      $_SESSION["password"] = $password; 
      $_SESSION["activity"] = $activity; 
      header("location: coach-home.php"); 
      exit(); 
     } 
     else 
      if ($admin ==1) 
       { header("location: player-login.php"); } 
     exit(); 
    } else { 
     echo 'That information is incorrect, try again <a href="testlog.php">Click Here $username</a>'; 
     exit(); 
    } 
} 
?> 

Чтобы сэкономить время, все работало, как это должно быть, пока я не стала поступать запросы в (админ == 2) {} бит. Я пытаюсь заставить его получить данные для регистрации, уже отправленные, а затем, заметив, что такое их уровень администратора (в данном случае 2 = они являются администратором), он запускает другой запрос для создания сеанса для администратора и принимает их на домашнюю страницу тренеров.

ОДНАКО, что кажется, что сеанс не создается (duh), поскольку тренерский дом не видит действительной СЕССИИ и как таковой перенаправляет меня.

Что я хотел бы знать, это a., если то, что я пытаюсь сделать, даже возможно, и не получилось, что b. Я начал работать над перенаправлением-перенаправлением ... так что после (admin == 2) он направляет человека к тренерскому логину, где есть по существу тот же запрос, что и выше, и затем он предназначен для перенаправления на тренерский дом. Тем не менее, страница не делает этого, вместо этого он говорит на тренере-входе и пустой (тренер-login.php код ниже)

Формы внизу страницы (в случае, если это уместно?)

<form id="form1" name="form1" method="post" action="testlog.php"> 
    User Name:<br /> 
     <input name="username" type="text" id="username" size="40" /> 
    <br /><br /> 
    Password:<br /> 
    <input name="password" type="password" id="password" size="40" /> 
    <br /> 
    <br /> 
    <br /> 

    <input type="submit" name="button" id="button" value="Log In" /> 

    </form> 

Любая помощь будет очень признательна.

тренер-login.php

<?php 
// Parse the log in form if the user has filled it out and pressed "Log In" 
if (isset($_POST["username"]) && isset($_POST["password"])) { 

    $coach = $_POST["username"]; // filter everything but numbers and letters 
    $password = $_POST["password"]; // filter everything but numbers and letters 
    // Connect to the MySQL database 
    include "dbconnect.php"; 
    $sql = mysql_query("SELECT id, activity FROM coaches WHERE username='$coach' AND password='$password' LIMIT 1"); // query the person 
    // ------- MAKE SURE PERSON EXISTS IN DATABASE --------- 
    $existCount = mysql_num_rows($sql); // count the row nums 
    if ($existCount == 1) { // evaluate the count 
     while($row = mysql_fetch_array($sql)){ 
      $id = $row["id"]; 
      $activity = $row["activity"]; 

     } 
     $_SESSION["id"] = $id; 
     $_SESSION["coach"] = $coach; 
     $_SESSION["password"] = $password; 
     $_SESSION["activity"] = $activity; 
     header("location: coach-home.php"); 
     exit(); 
    } else { 
     echo 'That information is incorrect, try again <a href="index.php">Click Here</a>'; 
     exit(); 
    } 
} 
?> 
+0

Является 'session_start();' внутри всех файлов с использованием сеансов? Добавьте отчет об ошибках в начало файла (ов) сразу после открытия тега < 'error_reporting (E_ALL); ini_set ('display_errors', 1); 'посмотрите, не даст ли что-либо. Также добавьте 'или die (mysql_error())' в 'mysql_query()'. –

+0

* «Форма внизу страницы (в случае, если это уместно?)» * «Да, так много оставьте это и всегда хорошо иметь. –

+0

Почему у вас есть цикл while, чтобы читать результаты запроса с 'LIMIT 1'? – Barmar

ответ

1

"да у меня есть session_start(); в большинстве файлов, для тренера-login.php кроме"


В соответствии с пожеланием ФП в:

session_start(); также должен быть в «coach-login.php», поскольку в переменной t есть переменные сеанса Вот.

Как я уже говорил, session_start(); должен быть внутри всех файлов, используя сеансы.

  • Именно поэтому сеансы не переносятся.
Смежные вопросы