divinity02 Ответов: 2

В чем причина, если ваша страница PHP становится пустой


привет, это снова я, это мой assignemet уже давно пытается исправить этот php-скрипт

во-первых, чтобы начать, он выдавал ошибку,

Warning: join(): Invalid arguments passed in C
это первая ошибка

и вторая ошибка была: обратите внимание: неопределенный индекс в c.
apprently если мой HTML код, я должен был зарегистрировать значения при регистрации, но в моем PHP-код у меня вместо того чтобы войти, так что я могу исправить это прямо

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

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

<pre><?php

		//$register=$_POST['register_user']; 
		 if(isset($_POST['register']))
		{
			
			//capture the variable from the form and store in php variables
			$title=$_POST['title'];
			$firstname=$_POST['fname'];
			$lastname=$_POST['lname'];
			$username=$_POST['username'];
			$email=$_POST['email'];
			$gender=$_POST['gender'];
			$service= join(", ", $_POST['services']);
			$address=$_POST['address'];
			$mypwd=$_POST['mypwd'];
			
			include'db_server.php';
			
			//Query the database
			$sql="SELECT * FROM members WHERE username='$username'";
			
			$result= mysqli_query($conn, $sql) or die ("ERROR:" .mysqli_error($conn));
			
			$rowcount=mysqli_num_rows($result);
			
			//checking to see if username is already exist
			if($rowcount >= 1) 
			{
				 echo "<script type=\"text/javascript\">
					  alert('Username already exits');
					  window.location=\"../xhtml/register_user.html\";
					   </script>";
					   
				
				
			}
			else
			{
				//insert data into table
				
				$sql = "INSERT INTO members
				VALUES('$title', '$firstname', '$lastname', '$username', '$email', '$gender', '$service', '$address', md5('$mypwd'))";
			
				if(mysqli_query($conn,$sql))
				{
					
					echo "<script type=\"text/javascript\">
					  alert('Welcome!! $firstname $lastname, you are now a member of the Caribbean Nature Seekers Institute TT(CNSITT)');
					  window.location=\"../index.html\";
					   </script>";
					
					   
						mysqli_close($conn);	
				}
				else
				{
					echo "Error inserting values into database";
				}
				
				//end of line
				
			}
		}
			
			
	
		
			
?>

2 Ответов

Рейтинг:
1

OriginalGriff

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

Итак, теперь вы входите во вторую стадию разработки (на самом деле это четвертая или пятая, но вы перейдете к более ранним стадиям позже): тестирование и отладка.

Начните с рассмотрения того, что он делает, и как это отличается от того, что вы хотели. Это важно, потому что это дает вам информацию о том, почему он это делает.

Время для вас, чтобы научиться отлаживать свой код - мы не можем сделать это для вас, так как это будет зависеть от данных, и у нас есть только крошечная часть всего кода.

Так что начните с Google: отладка php - Google search[^] и пройдите по нескольким ссылкам.
Это выглядит интересно: Отладка в PHP[^]

Подумайте о том, что должна делать каждая строка кода перед ее выполнением, и сравните это с тем, что она действительно делала, когда вы использовали кнопку "Step over" для выполнения каждой строки по очереди. Он сделал то, что вы ожидали? Если да, то переходите к следующей строке.
Если нет, то почему? Чем это отличается?
Надеюсь, это поможет вам определить, в какой части этого кода есть проблема и в чем она заключается.
Это навык, и его стоит развивать, поскольку он помогает вам как в реальном мире, так и в развитии. И, как и все навыки, он только улучшается при использовании!


divinity02

@OriginalGriff

то есть весь код не знаю хотите ли вы чтобы я тоже разместил html код

Рейтинг:
0

Patrice T

$sql="SELECT * FROM members WHERE username='$username'";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


divinity02

@Patrice T что не так с этой строкой

Patrice T

Как объяснено в решении, эта строка и другие подвергаются атаке, называемой "SQL-инъекцией"

divinity02

@Patrice T, если это строка, которая вызывает проблему, как я должен обращаться к базе данных, какую строку кодов я должен использовать, или если у вас есть какие-либо предложения о том, что я должен использовать вместо этой строки кода, пожалуйста, скажите мне na