PHP Несколько функций на странице

Салам, все парни … Я застрял в нескольких функций на одной странице PHP

например, я создал login () и home (), когда я делаю свой логин, он показывает home, но логин все еще там, как я могу просматривать только одну функцию за раз ..

вот сценарий

  <?php

function login() {
if (isset($_POST['sub'])) {
$user   = $_POST['user'];
$gender = isset($_POST['check']);

if ($user == "admin" && $gender == "male") {
echo "oh boy you have access to this site";
home();
} else if ($user == "admin" && $gender == "female") {
echo " Hey Lady.. You have access to this site";
home();
} else if ($gender == "" || $gender != "male" || $gender != "female") {
echo "please select gender";
} else if ($user == "" || $user == " ") {
echo "input username";
} else {
echo " '" . $user . "' " . " you enter is wrong";
}
}
}

?><?php
login();
?>
<form method="POST" >
<input type="text" name="user" placeholder="username" /><br>
Male: <input type="radio" value="male" name="check">  female : <input type="radio"value="female" name="check" > <br> <input type="submit" name="sub">
</form>

<?php

function home() {
?>

<p><center>Practice of string a simple test home() </center></p>
<?php

$a = "multi thinker ";

$w    = ucwords($a);
$trim = trim($a, " ");
$trim = ltrim($a, " ");
$trim = rtrim($a, " ");

echo $w . " " . $trim;

}
?>

0

Решение

<?php
function home(){
header("Location: http://google.com");
}

function login() {
if (isset($_POST['sub'])) {
$user   = $_POST['user'];
$gender = isset($_POST['check']);

if ($user == "admin" && $gender == true) {
echo "oh boy you have access to this site";
home();
} else if ($user == "admin" && $gender == false) {
echo " Hey Lady.. You have access to this site";
home();
} else if ($gender == "" || $gender != "male" || $gender != "female") {
echo "please select gender";
} else if ($user == "" || $user == " ") {
echo "input username";
} else if ($user != "admin") {
echo " '" . $user . "' " . " you enter is wrong";
} else {
}
}else{
//$_POST['sub'] does not exist, therefore output login form
$out = '
<form method="POST" >
<input type="text" name="user" placeholder="username" /><br>
Male: <input type="radio" value="male" name="check">
Female : <input type="radio" value="female" name="check" > <br>
<input type="submit" name="sub">
</form>';
echo $out;
}
}

login();

?>
1

Другие решения

Если вы собираетесь разместить логин и домашний контент на одной странице, вам нужно указать состояние, чтобы указать, был ли логин успешным. Я вижу, вы установили $ user в вашей функции входа. Возможно, сделайте это глобальной переменной и проверьте ее наличие следующим образом:

<?php
$user = null; //nothing yet, will be set on successful login

function login() {
global $user;
... //same as you have
}

if( $user === null ) { //have not logged in yet
login(); //try to log in if we have post data
}
if( $user === null ) { //login failed or was not submitted yet
?>

<form method="POST">
... your login form goes here ...
</form>

<?php
return; //do not show the rest of the home page since we showed login
} //end if $user === null

function home() {
... your home function here ...
}
home();
?>

Вы можете улучшить организацию этого, но основная идея состоит в том, чтобы иметь if-then-else, который разветвляется на (a), это форма входа в систему, отправляемая сейчас, и (b) пользователь успешно вошел в систему.

Было бы лучше разделить это на несколько файлов. Есть много способов сделать это, например, проверка входа в систему и, если он отсутствует, выдача заголовка («Расположение: http://mydomanin.com/login«) редирект, затем со страницы входа в систему перенаправьте обратно после успешного входа.

Вы также можете сохранить $ user в файле cookie сеанса вместо глобальной переменной, чтобы пользователю не приходилось входить в систему при каждом обновлении страницы.

1

По вопросам рекламы [email protected]