2013-02-21 1 views
0

Я создал сеанс, но после ввода пароля & в «login.php» страница снова перенаправлена ​​на «login.php». следующий код - это следующая страница к «login.php», которая проверяет правильность адреса электронной почты &.сеанс не определен

<?php 
    $con = mysql_connect("localhost","Rahul",""); 

    if (!$con) { 
     die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("ebusiness", $con); 
    $result=mysql_query("select * from members where Email='$_POST[login]' and Password='$_POST[pwd]' ") or die(mysql_error()); 

    while($row=mysql_fetch_array($result)) { 
     if(strcmp("trim($_POST[login])","trim($row[Email])"==0) && strcmp("trim($_POST[pwd])","trim($row[Password])")==0) { 
      echo "<meta http-equiv='refresh' content='0.5;url=home.php'/>"; 
      session_start(); 
      $_SESSION['email']=$_POST['login']; 
      $_SESSION['id']=$row['id']; 
      echo "<br><br><br>"; 
      echo "<table align='center' border='0' cellspacing='0' cellpadding='0' bgcolor='#F0F0F0'><tr></tr><tr align='center'><td><h3>Please wait...</td></tr></table>"; 
      return; 
     } 
    } 
    mysql_close($con); 
?> 

и страница "home.php" - это страница, на которой отображается информация после успешной проверки. код home.php:

<?php 
    session_start(); 

    if (!isset($_SESSION['email'])) { 
     header("Location: login.php"); 
     return; 
    } else { 
     $con = mysql_connect("localhost","Rahul",""); 
     mysql_select_db("ebusiness", $con); 
     $result = mysql_query("SELECT * FROM members WHERE id = $_SESSION[id]") or die(mysql_error()); 

     while($row = mysql_fetch_array($result)) { 
      echo "<table height=100% width=100% border='0' cellspacing='0'><tr height=20%><td colspan=2>"; 
      include 'header.php'; 
      echo "</td></tr>"; 
     } 
    } 
?> 

сеанс сначала создается на «welcome.php» и «home.php» он проверяет, существует ли сессия или нет. а затем перенаправляется на «login.php». Но поскольку я уже создал сеанс, я не понимаю, почему home.php не загружается. плз помогите мне ..

+0

Положить session_start(); наверху каждой страницы. И что это за линия? if (strcmp ("trim ($ _ POST [login])", "trim ($ row [Email])" == 0) && strcmp ("trim ($ _ POST [pwd])", "trim ($ row [Password ]) ") == 0) <- ошибка синтаксического анализа, поэтому он не работает – iiro

+0

@iiro строка, о которой вы говорили, работает идеально. Нет проблем на этом ... потому что я запустил ее перед созданием сеансов. и даже после создания сеанса он работал нормально в течение нескольких раз .. но теперь его не работает – user2078502

ответ

0

Попробуйте

login.php

<?php 
    ob_start(); 
    session_start(); 
    $con = mysql_connect("localhost","Rahul","")or die(mysql_error()); 
    mysql_select_db("ebusiness", $con)or die(mysql_error());; 

    $result = mysql_query("select * from members where Email = '".$_POST['login']."' and Password = '".$_POST['pwd']."' LIMIT 1") or die(mysql_error()); 

    if(mysql_num_rows($result) > 0) 
    { 
     while($row = mysql_fetch_array($result)) 
     { 
      echo "<meta http-equiv='refresh' content='0.5;url=home.php'/>"; 
      $_SESSION['email'] = $_POST['login']; 
      $_SESSION['id'] = $row['id']; 
      echo "<br /><br /><br />"; 
      echo "<table align='center' border='0' cellspacing='0' cellpadding='0' bgcolor='#F0F0F0'><tr></tr><tr align='center'><td><h3>Please wait...</td></tr></table>"; 
      return; 
     } 
    } 

    mysql_close($con); 
    flush(); 
?>
+0

в вашем запросе вы получаете результат, равный электронной почте и паролю, поэтому нет необходимости переучивать его с помощью strcmp ... теперь все, что вам нужно просто проверьте, возвращает ли запрос более 0 записей, и вы закончили. –

0

Помещенный

session_start();

верх каждой страницы. Но то, что вы видите ниже, не является ответом на ваш вопрос. Проверьте эту строку:

if(strcmp("trim($_POST[login])","trim($row[Email])"==0) && strcmp("trim($_POST[pwd])","trim($row[Password])")==0) 
{ 

посмотреть на эту strcmp("trim($_POST[login])","trim($row[Email])"==0) что означает

strcmp("sometext","someothertext"==0) 

, что означает

strcmp("sometext",true) 

так что ваша линия

if(strcmp("trim($_POST[login])","trim($row[Email])"==0) && strcmp("trim($_POST[pwd])","trim($row[Password])")==0) 
    { 

такой же, как

if(true && strcmp("evenmoretext","evenevenevenmoremoretext")==0) 
    { 

которого

if(true && 0==0) 

которого

if(true && true) 

Так вы достигнете этой echo "<meta http-equiv='refresh' content='0.5;url=home.php'/>";, потому что When a string is specified in double quotes or with heredoc,переменныхare parsed within it. Но никаких функций (триммеров, в этом case) анализируются!

Некоторые тесты:

$_POST['login'] = 'postemail'; 
$_POST['pwd'] = 'posttest'; 
$row['Email'] = 'postemail'; 
$row['Password'] = 'posttest'; 

var_dump("trim($_POST[login])"); // string(15) "trim(postemail)" 
var_dump("trim($row[Email])"); // string(15) "trim(postemail)" 
var_dump("trim($row[Email])"==0); // bool(true) 
var_dump(strcmp("trim($_POST[login])","trim($row[Email])"==0)); //int(1) 

На мой взгляд, вы должны очистить и исправить код. Например, первый Условный оператор должен быть:

if(strcmp(trim($_POST["login]"),trim($row["Email"]))==0 && strcmp(trim($_POST["pwd]"),trim($row["Password"]))==0) 
+0

Я достигаю линии echo «"; & на странице показывается «Подождите ...», а затем перенаправляется на login.php – user2078502

+0

@ user2078502 О, я вижу. Я отредактировал свой ответ, и вы знаете, почему вы достигли этого. – iiro

0

У вас не хватает session_start(); в login.php странице Добавьте это в верхней части страницы.

+0

Я написал это. и его не login.php dats welcome.php .. «login.php» - это тот файл, где я прошу пользователя ввести его адрес электронной почты и пароль. и я не показывал dat файл здесь .. после login.php «welcome.php» выполняется там, где выполняется процесс проверки .. и, наконец, «home.php» должен быть выполнен. – user2078502

+0

'session_start(); $ _SESSION ['email'] = $ _ POST ['login']; $ _SESSION ['id'] = $ row ['id']; 'удалить' session_start() 'отсюда и разместить его поверх страницы –