2013-04-16 5 views
1

Проблема заключается в следующем: я создаю простую страницу входа в систему, пользователь должен ввести имя пользователя и пароль и нажать кнопку «Войти». Эта кнопка представляет введенные значения на другую страницу php, которая имеет дело с базой данных и гарантирует, что пользователь зарегистрирован. Теперь, если он/она не зарегистрирован, страница возвращается на страницу входа в систему, но до этого она меняет текст ярлыка, чтобы сообщить пользователю, что введенное имя пользователя или пароль неверны.Как изменить текст ярлыка одной страницы с другой страницы php?

Моя проблема в том, что вторая страница php не имеет доступа к первым элементам!

Вот коды, которые я использовал до сих пор! Второй PHP страница: называется LoginSubmit.php:

if($row = mysqli_fetch_array($result)) 
{ 
    echo "<meta http-equiv='refresh' content='0;URL=../Home.php'>"; 
} 
else 
{ 
    echo"<script type='text/javascript'>"; 
echo"parent.document.getElementById('FailureText').innerHTML = 'Yours user name or password are wrong!!';"; 
echo "</script>"; 
echo "<meta http-equiv='refresh' content='0;URL=../Login.php'>"; 
} 

И на первой странице (называемой login.php), метка определяется в форме, как:

<td align="center" class="LiteralProb" colspan="2" style="color:Red;"> 
    <label ID="FailureText"></label> 
</td> 

Это пустая и, кажется, не -existing label, но при ошибке входа в систему должно отображаться сообщение пользователю!

Любая помощь, пожалуйста! :) ??

+0

Вы хотите проверить AJAX. Или обрабатывайте все в одном скрипте и перезагружайте всю страницу. –

ответ

1

Сохраните это значение как «флэш-сообщение» в сеансе. В LoginSubmit.php использования:

// at the top of your script 
session_start(); 

// when you know an error occurred 
$_SESSION['failure_message'] = 'Yours user name or password are wrong!!'; 

А на другой странице использования:

// at the top of your script 
session_start(); 

// in your HTML part 
<label ID="FailureText"> 
    <?php print (isset($_SESSION['failure_message']) ? $_SESSION['failure_message'] : ''); ?> 
</label> 

// at the bottom of your script remove the value from the session again 
// to avoid that it's displayed twice 
unset($_SESSION['failure_message']); 
+0

AKA "флэш-сообщения". –

1

Ваша страница Войти ничего, кроме простого ;-)

Как насчет этого?

if (!$validLogin) { 
    header('Location: http://www.example.com/login?err'); 
    exit; 
} 

... и:

<? if(isset($_GET['err'])){ ?> 
    <div>Invalid username/password</div> 
<? } ?> 
1

это может быть сделано в некоторых различными способами:

1 Вы можете использовать переменные сессии для хранения значений, которые вы хотите поделиться между PHP скрипты :

session_start(); 
$_SESSION['val1']=$value1; //set the value 

Вы получить это следующим образом:

//receive on the other script 
session_start(); 
$value1=$_SESSION['val1']; 

2 Вы можете передать переменную, используя GET (URL) при отправке пользователя в сценарий входа.

header("location: first_script_url?error=some_error_message"); 

Вы получить его, как это на сценарий входа в систему:

$err_msg=$_GET['error']; 

3- Вы можете сделать процесс входа в систему с помощью AJAX, поэтому вместо того, чтобы перенаправить пользователя от одного сценария к другому, вы делаете вызов второго скрипта и в зависимости от возвращаемого значения второго скрипта вы указываете пользователю, была ли ошибка:

с использованием JQuery, лучше использовать POST, если мы передаем информацию пользователя, также было бы лучше использовать HTTPS (вы должны делать это независимо от выбранного вами метода) или мере использовать функцию шифрования на пароль (это не 100% безопасно):

$.post("second_url.php", {user: username, pass: password}), 
function(data){ 
    //data contains anything second_url.php echoed. So you want to echo a 1 for example if everything went ok. 
    if(data == 1){ 
      //OK 
    }else{ 
      //Something went wrong, show the user some error. 
    } 
}); 

Пользователь никогда не оставит первый сценарий, так что у вас есть все переменные в вашем JavaScript/Jquery.

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