Member 13097810 Ответов: 4

Фатальная ошибка: неперехваченная ошибка: вызов неопределенной функции mysql_real_escape_string()


мы получаем эту ошибку во время register.php
Фатальная ошибка: Неперехваченная ошибка: вызов неопределенной функции mysql_real_escape_string()

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

при регистрации php я получаю эту ошибку

Richard Deeming

Это означает, что где-то в вашем секретном коде есть ошибка.

Но поскольку вы отказались поделиться с нами соответствующим кодом, мы не можем сказать вам, где и как его исправить.

Все, что мы можем вам сказать, это то, что вы пытаетесь вызвать функцию под названием mysql_real_escape_string, и эта функция не определена.

Bryian Tan

Возможно, эта функция устарела в зависимости от версии PHP, которую использует приложение. Мое внутреннее чувство таково, что приложение должно использовать mysqli_real_escape_string(). Мы не знаем, пока вы не решите поделиться своим секретным кодом ...

PHP: mysql_real_escape_string - руководство пользователя[^]

4 Ответов

Рейтинг:
28

Jochen Arndt

Прочитайте использования mysql_real_escape_string()[^] документация:

Цитата:
Предупреждение Это расширение было устаревшим в PHP 5.5.0, и оно было удалено в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. также MySQL: выбор руководства по API и связанные с ним часто задаваемые вопросы для получения дополнительной информации. Альтернативы этой функции включают в себя:


Member 13097810

СЭР СПАСИБО

Рейтинг:
24

Member 13097810

пожалуйста, найдите мой код

<html>
	<head>
		<title>BHARAT HILLS</title>
	</head>
	<body>
		<h2>Registration Page</h2>
		<a href="index.php">Click here to go back</a><br/><br/>
		<form action="register.php" method="POST">
		Enter Username:  <input type="text" Name ="username" required ="required"/><br/><br/>
		Enter password:  <input type="password" name="password" required="required"/><br/>
		<input type="submit" value="register"/>
		</form>
	</body>
</html>

<?php
if($_SERVER["REQUEST_METHOD"] == "POST"){
		$username=mysql_real_escape_string($_POST['username']);
		$password=mysql_real_escape_string($_POST['password']);
	$bool=true;
	
		mysql_connect("localhost", "root","") or die(mysql_error());//connect to server
		mysql_select_db("first_db") or die("cannot connect to database");//connect to database
		$query=mysql_query("select * from Users"); //query the user table
		while($row=mysql_fetch_array($query)) //display all rows from query
		{
				$table_users=$row['username']; //the first username row is passed on to $table_users,and so on untill the query is finish
				if($username==$table_user)// checks if there are any matching fields
				{
						$bool=false;//sets bool to false
						print'<script>alert("username has been taken!"):</script>';//redirects to register.php
						
				}
		}
		
		if($bool) //checks if bool is true
		{
				mysql_query("insert into user (username,password) values ('$username','$passwors')");//inset the vallue to table users
				print '<script>alert("Successfully Registered!");</script>';//prompts the user
				print '<script>window.location.assign("register.php");</script>';//redirect to register.php
				}
				
				}
?>


Member 13097810

сэр в моем коде
mysql_connect("localhost", "root","") или die(mysql_error());//подключение к серверу
localhost-это подчеркнуть красный цвет означает, что не подключен, пожалуйста, помогите мне просто, используя код УР я м новые для PHP

Richard Deeming

Если вы хотите обновить свой вопрос, Нажмите зеленую ссылку "улучшить вопрос" в нижней части вашего вопроса.

НЕ опубликуйте свое обновление как "решение".

И НЕ отметьте ваше "решение" как принятое решение вашего вопроса!

Рейтинг:
2

Member 13029774

<?php
	$username = "";
	$email = "";
	$errors = array();
		// connect to the database
	$db = mysqli_connect('localhost', 'root', '', 'registration');

	// if register button is clicked

	if(isset($_POST['register'])){
		$username = mysql_real_escape_string($_POST['username']);
		$email = mysql_real_escape_string($_POST['email']);
		$password_1 = mysql_real_escape_string($_POST['password_1']);
		$password_2 = mysql_real_escape_string($_POST['password_2']);

		//ensure that the form field are filled properly

		if (empty($username)) {
			array_push($errors, "Username is required"); 
		}
		if (empty($email)) {
			array_push($errors, "Email is required"); 
		}
		if (empty($password_1)) {
			array_push($errors, "Password is required"); 
		}
		if (empty($password_1 != $password_2)) {
			array_push($errors, "Two password do not match"); 
		}

		// if there are no errors, save user to the database
		if (count($errors) == 0) {
			$password = md5($password_1); //encrypt password before storing in database (security)
			$sql = "INSERT INTO users (username, email, password) 
						VALUES ('$username','$email', '$password')";
			mysqli_query($db,$sql);
		}

	}
?> 


Richard Deeming

Вопрос уже решен.

И то md5 функция[^] специально предупреждает, что это не подходящий для защиты паролей. Вы должны использовать хэш пароля[^] и функцию password_verify[^] вместо.

PHP: Часто задаваемые вопросы по хэшированию паролей[^]

Рейтинг:
2

Member 14918181

Успех! Зарегистрированный Пользователь

';
} еще {
$message_alert = '


Провалился! Не Зарегистрирован!
';
}
} еще {
$message_alert = '

Провалился! Пароль не совпадает!
';
}
}

?>