Member 12895537 Ответов: 3

Отключить или деактивировать / активного пользователя администратором в PHP


Привет. Я хочу создать отключить или деактивировать / активный пользователь опубликовано admin в PHP. У меня уже успех
об этом. Однако я хочу, чтобы пользователь и администратор вошли в одну форму и перешли на свою конкретную страницу. Да, это сработало. Я настраиваю и добавляю процесс для типа пользователя (2 типа : для пользователя и администратора) , однако когда я добавляю оператор if else, деактивирующая функция не работает, и деактивирующий пользователь может войти на страницу пользователя. Можете ли вы проверить мое состояние если еще index.php-что? Я думаю, что проблемы по этой части, потому что если я удалить пользователя тип состояние, то состояние это нормально, однако если добавить пользовательский тип, состояние, тип пользователя условия работы выключена условие не работает . Что же мне делать?

Ниже процесс функционального типа пользователя, администратора заходим в админ-разделе и пользователь переходит на страницу пользователя, однако такими не работал, и пользователь самостоятельно может войти даже изменить активный отключение в админке. Я застрял там. Помогите. Спасибо.

Что я уже пробовал:

Config.php :

<?php
class Database extends pdo {

    private $dbtype; 
    private $host;     
    private $user;
    private $pass; 
    private $database; 

    public function __construct(){ 
        $this->dbtype = 'mysql'; 
        $this->host = 'localhost'; 
        $this->user = 'root'; 
        $this->pass = ''; 
        $this->database = 'workshire'; 
        $dns = $this->dbtype.':dbname='.$this->database.";host=".$this->host; 
        parent::__construct( $dns, $this->user, $this->pass ); 
    }     
}
$database = new Database();
$dbh =& $database;
?>


index.php :
<?php
	session_start();
	require_once('config.php');
?>
<!DOCTYPE html>
<html>
<head>
	<title>User's Account Activiation/Deactivation</title>
		<link href="css/bootstrap.css" rel="stylesheet" media="screen">
		<link href="css/bootstrap-responsive.css" rel="stylesheet" media="screen">
		<link rel="stylesheet" type="text/css" href="css/style1.css">
</head>
<body>
<?php

	if(isset($_POST['submit'])) {
		$user_email = $_POST['user_email'];
		$access_code = $_POST['access_code'];
		$result = $dbh->prepare("SELECT * FROM talent_pool WHERE user_email= :user_email AND access_code = :access_code");
		$result->bindParam(':user_email', $user_email);
		$result->bindParam(':access_code', $access_code);
		$result->execute();
		$rows = $result->fetch(PDO::FETCH_NUM);
		if($rows > 0) {
			$result=$dbh->prepare("SELECT * FROM talent_pool WHERE user_email=:user_email");
			$result->bindParam(':user_email', $user_email);
			$result->execute();
			while($row = $result->fetch(PDO::FETCH_ASSOC)){
				$res_id = $row['id'];
				$curr_status = $row['status'];
				$roles = $row['user_type'];
			}
				if($curr_status=='Deactive') {
					$message = "Sorry $user_email, your account is temporarily deactivated by the admin.";
				}else{
					$_SESSION['id'] = $res_id;
					header("location: indexEmp.php?logid=$res_id");
				}
				
				if($roles =='admin') {
					header("location: admin/index.php?logid=$res_id");
				}else{
					$_SESSION['id'] = $res_id;
					header("location: indexEmp.php?logid=$res_id");
				}
								
		}
		else{
			$message = 'User Email and Access Code are not exists.';
		}
	}
?>
<div class="container">
<h1 align="center">User's LogIn</h1><hr>
	<form method="post" align="center">
		<div class="form-group">
			<label for="name">User Email:</label>
			<input type="text" id="user_email" name="user_email" class="form-control" placeholder="User Email" autofocus required />
		</div>
		<div class="form-group">
			<label for="name">Access Code</label>
			<input type="password" id="access_code" name="access_code" class="form-control" placeholder="Access Code" required>
		</div>
		<div>
			<?php
				if(!empty($message)) {
					echo "<p style='color: blue; padding: 2px;'>".$message."</p>";
				}
			?>
		</div>
		<input type="submit" name="submit" value="Access Account" class="btn btn-primary"/>
	</form><br/>
</div>
</body>
</html>

3 Ответов

Рейтинг:
5

Member 12895537

не волнуйся. Я уже получил свое решение здесь . Спасибо Вам за помощь :)


if (isset ( $_POST ['submit'] )) {
	
	require_once('config.php');
	$user_email = $_POST['user_email'];
	$access_code = $_POST ['access_code'];	
	
		
	if ($access_code == "super"){
		$_SESSION ['id'] = "Admin";
		header ( "Location:admin/index.php" );
	} 

	else {

		/* execute SQL command */
		$result = $dbh->prepare("SELECT * FROM talent_pool WHERE user_email= :user_email AND access_code = :access_code");
		$result->bindParam(':user_email', $user_email);
		$result->bindParam(':access_code', $access_code);
		$result->execute();
		$rows = $result->fetch(PDO::FETCH_NUM);
		if($rows > 0) {
			$result=$dbh->prepare("SELECT * FROM talent_pool WHERE user_email=:user_email");
			$result->bindParam(':user_email', $user_email);
			$result->execute();
			while($row = $result->fetch(PDO::FETCH_ASSOC)){
				$res_id = $row['id'];
				$curr_status = $row['status'];
			}
			
				if($curr_status=='Deactive') {
					$message = "Sorry $user_email, your account is temporarily deactivated by the admin.";
				}else{
					$_SESSION['id'] = $res_id;
					header("location: indexEmp.php?logid=$res_id");
				}
											
		}
		else{
			$message = 'User Email and Access Code are not exists.';
		}
	}
}


Только еще один вопрос :
if ($access_code == "super"){

Выше кода я хочу поставить вот так
if ($access_code == "super")||($user_email == "nabilah@yahoo.com"){

однако он сказал: :
syntax error, unexpected '||' (T_BOOLEAN_OR)

Не могли бы вы помочь мне исправить это??


Peter Leow

Это должно быть опубликовано как новый вопрос.

Member 12895537

Мне просто нужно решение. Почему вы так сложно помогаете мне ответить и многие правила? Это место, чтобы помочь разработчику, и оно все еще было в этой теме, Почему я должен публиковаться как новый? . Разве ты не можешь просто помочь? Вы не помогаете мне со вчерашнего дня, но все же заставляете меня выяснить свою вину. Почувствуйте здесь стресс. Спасибо за помощь.

Рейтинг:
23

Peter Leow

Позвольте мне указать на источник ваших неприятностей -
После выполнения первого блока if-else:

if($curr_status=='Deactive') {
    $message = "Sorry $user_email, your account is temporarily deactivated by the admin.";
}else{
    $_SESSION['id'] = $res_id;
    header("location: indexEmp.php?logid=$res_id");
}

Он переходит к выполнению второго блока if-else:
if($roles =='admin') {
    header("location: admin/index.php?logid=$res_id");
}else{
    $_SESSION['id'] = $res_id;
    header("location: indexEmp.php?logid=$res_id");
}
Что же происходит? Именно этот второй блок кода отменяет все, что делается в первом блоке. Итак, следующий вопрос-где разместить этот второй блок кода? Это вам предстоит выяснить.

++++++[Следить]++++++
Раз уж вы настаиваете, взгляните на это:
if($curr_status=='Deactive') {
    $message = "Sorry $user_email, your account is temporarily deactivated by the admin.";
} else { // status is active

    if($roles =='admin') {
        header("location: admin/index.php?logid=$res_id");
    } else {
        $_SESSION['id'] = $res_id;
        header("location: indexEmp.php?logid=$res_id");
    }

}

Я также замечаю, что вы используете учетную запись root для доступа к базе данных mysql, то есть нет-нет. Вы должны создать отдельную учетную запись Пользователя с ограниченным правом доступа PHP - кода к базе данных.
+++++ + [Продолжение 2]++++++
Другой способ заключается в следующем:
if($roles =='admin') {
	header("location: admin/index.php?logid=$res_id");
} else { // normal user
    
    if($curr_status=='Deactive') {
    	$message = "Sorry $user_email, your account is temporarily deactivated by the admin.";
	} else {
   
		$_SESSION['id'] = $res_id;
        header("location: indexEmp.php?logid=$res_id");
	}

}


Member 12895537

Я уже настраиваю и пробовал это быть одним условием, однако оно остается ошибкой . Это тоже моя проблема , я не знал, как ее найти.Я пытаюсь выяснить, используя if...else if ... else, и я играю условие все еще ошибка . Я удаляю { а также добавляю } еще ошибку..тогда как ее решить? есть решение?

синтаксическая ошибка, неожиданный '{', ожидая '(' в C:\xampp\htdocs\workshire\accountivate\index.php на линии 37

if($roles =='admin') {
					header("location: admin/index.php?logid=$res_id");
				}else 
					if {
						$_SESSION['id'] = $res_id;
					header("location: admin/indexEmp.php?logid=$res_id");
				}
			
				else ($curr_status=='Deactive') {
					$message = "Sorry $user_email, your account is temporarily deactivated by the admin.";
				}

Peter Leow

После первого else явно отсутствует открытая скобка. Однако, если отбросить синтаксические ошибки, ваша логика неверна. Следуйте потоку вашего кода, чтобы выяснить это.

Member 12895537

Я уже следую за потоком. Я знаю, что это неправильно. Вот почему я спрашиваю, потому что не знаю, как это понять. Можете ли вы помочь мне показать правильную логику? Не заставляйте меня выяснять, потому что я действительно понятия не имею, как это исправить.

Member 12895537

Покажи мне правильный. Я знаю, что это утверждение неверно и логика whttps://www.codeproject.com/WebControls/#rong, из-за этого я спрашиваю здесь и нуждаюсь в решении или идее.Я не могу понять это утверждение сам. Пожалуйста, дайте мне какое-нибудь решение или идею для этого, если еще есть.Мне нужна помощь

Peter Leow

Добавлено в раствор 1.

Member 12895537

Извини, я не понимаю тебя, Питер. Зачем мне нужен отдельный аккаунт? администратор будет активен или деактивирован пользователем. Активный пользователь может войти на страницу пользователя. Уже другая страница и аккаунт. Deactive не может войти в систему. администратора, зайти в админ-разделе. пользователь переходит со страницы пользователя. Он находится в localhost. Проблема теперь деактивированный пользователь может войти в систему. и мне нужно решение для этого утверждения if else. Покажите мне какой-нибудь пример или помогите понять, как я могу исправить свое утверждение if?

Peter Leow

Рассуждение находится в начальной части решения 1: первое if-else отменяет второе if-else. Предполагается, что вы замените свои исходные два блока if-else кодом, который я вам дам.

Рейтинг:
0

Member 12895537

Я уже настраиваю и пробовал это быть одним условием, однако оно остается ошибкой . Это тоже моя проблема , я не знал, как ее найти.Я пытаюсь выяснить, используя if...else if ... else, и я играю условие все еще ошибка . Я удаляю { а также добавляю } еще ошибку..тогда как ее решить? есть решение?

syntax error, unexpected '{', expecting '(' in C:\xampp\htdocs\workshire\accountivate\index.php on line 37

<pre>if($roles =='admin') {
					header("location: admin/index.php?logid=$res_id");
				}else 
					if {
						$_SESSION['id'] = $res_id;
					header("location: admin/indexEmp.php?logid=$res_id");
				}
			
				else ($curr_status=='Deactive') {
					$message = "Sorry $user_email, your account is temporarily deactivated by the admin.";
				}




index.php :

<?php
	session_start();
	require_once('config.php');
?>
<!DOCTYPE html>
<html>
<head>
	<title>User's Account Activiation/Deactivation</title>
		<link href="css/bootstrap.css" rel="stylesheet" media="screen">
		<link href="css/bootstrap-responsive.css" rel="stylesheet" media="screen">
		<link rel="stylesheet" type="text/css" href="css/style1.css">
</head>
<body>
<?php

	if(isset($_POST['submit'])) {
		$user_email = $_POST['user_email'];
		$access_code = $_POST['access_code'];
		$result = $dbh->prepare("SELECT * FROM talent_pool WHERE user_email= 
                :user_email AND access_code = :access_code");
		$result->bindParam(':user_email', $user_email);
		$result->bindParam(':access_code', $access_code);
		$result->execute();
		$rows = $result->fetch(PDO::FETCH_NUM);
		if($rows > 0) {
			$result=$dbh->prepare("SELECT * FROM talent_pool WHERE 
                        user_email=:user_email");
			$result->bindParam(':user_email', $user_email);
			$result->execute();
			while($row = $result->fetch(PDO::FETCH_ASSOC)){
				$res_id = $row['id'];
				$curr_status = $row['status'];
				$roles = $row['user_type'];
			}
			
			if($roles =='admin') {
					header("location: admin/index.php?
                                        logid=$res_id");
				}else 
					if {
						$_SESSION['id'] = $res_id;
					header("location: admin/indexEmp.php?
                                        logid=$res_id");
				}
			
				else ($curr_status=='Deactive') {
					$message = "Sorry $user_email, your 
                                account is temporarily deactivated by the admin.";
				}
				
								
		}
		else{
			$message = 'User Email and Access Code are not exists.';
		}
	}
?>
<div class="container">
<h1 align="center">User's LogIn</h1><hr>
	<form method="post" align="center">
		<div class="form-group">
			<label for="name">User Email:</label>
			<input type="text" id="user_email" name="user_email" class="form-control" placeholder="User Email" autofocus required />
		</div>
		<div class="form-group">
			<label for="name">Access Code</label>
			<input type="password" id="access_code" name="access_code" class="form-control" placeholder="Access Code" required>
		</div>
		<div>
			<?php
				if(!empty($message)) {
					echo "<p style='color: blue; padding: 2px;'>".$message."</p>";
				}
			?>
		</div>
		<input type="submit" name="submit" value="Access Account" class="btn btn-primary"/>
	</form><br/>
</div>
</body>
</html>


Peter Leow

Это не решение, удалите его.