mysql и php – Извлечение данных из базы данных на основе зарегистрированного пользователя

прежде чем я начну и попытаюсь создать веб-сайт, я хотел бы знать, может ли поиск контента пользователей из базы данных в зависимости от того, какой пользователь зарегистрирован, может быть задан переменной $ _SESSION. Так, например, если мне нужны все сообщения для примера пользователя ':

$_SESSION['username'] = $_POST['username'] // set when the user logs in $username = $_SESSION['username'] $data = mysql_query("Select * from messagesTable where username = '$username'") while($row = mysql_fetch_array($data)) { echo $row['message'] } 

Я хотел знать, будет ли это правильным способом сделать что-то подобное, а также, если его безопасно возвращать (личные) данные на основе переменной сеанса.

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

Безопасно возвращать пользовательские данные на основе переменной $_SESSION если вы уверены в ее действительности, потому что вы сами устанавливаете ее в коде. Неверно возвращать данные на основе переменной сеанса, которую вы получаете от $_POST .

Сначала вы установили

 $_SESSION['username'] = $_POST['username']; 

Поэтому, если вы не подтвердили с паролем или иным образом, что этот пользователь является тем, кем он себя утверждает, вы не должны использовать $_POST['username'] чтобы возвращать другую информацию. Если ваш процесс входа в систему (который мы не видим выше) уже проверяет, что $_POST['username'] действителен, вы можете использовать его в качестве источника для получения дополнительной информации.

Вам также нужно будет отфильтровать от SQL-инъекции:

 $_SESSION['username'] = mysql_real_escape_string($_POST['username']); 

что не является стандартным и, вероятно, небезопасным, поскольку phpsession остается открытым, даже если вкладка браузера, возможно, не открыта для сайта, поскольку cookie не ослабевает, пока браузер не выключится, а также вы можете просто отправить параметр сообщения на сайт и получить информацию, так что сценарии входа немного более продвинутые, вы могли бы что-то вроде уникального ключа, который генерируется при входе в систему, и когда они покидают сайт с помощью javascript, удалите cookie-то вроде этого

Это не был бы правильный способ сделать это нет.

Могу ли я предложить вам ознакомиться с документами php / mysql и или хорошей книгой, прежде чем пытаться создать сайт.

Вам также необходимо изучить безопасность (захват сеанса, кросс-скриптинг, атаки mysql, токены форм, системы входа, пользовательские роли / разрешения). Поиск Google – ваш друг …

 <?php session_start(); $username=""; if($_SESSION['username']==true){ $username=$_SESSION['username']; $conn=mysql_connect('localhost','user','passwd') or die("Unable to connect to database" .mysql_error()); mysql_select_db('DBName') or die(mysql_error()); $sql="SELECT * FROM tablename WHERE username='$username'"; $retval=mysql_query($sql, $conn) or die("Could not perform query" .mysql_error()); while($row=mysql_fetch_array($retval)){ echo {$row['message']}; } mysql_free_result($retval); mysql_close($conn); } else{ return false; header("Location:login.php"); } ?> в <?php session_start(); $username=""; if($_SESSION['username']==true){ $username=$_SESSION['username']; $conn=mysql_connect('localhost','user','passwd') or die("Unable to connect to database" .mysql_error()); mysql_select_db('DBName') or die(mysql_error()); $sql="SELECT * FROM tablename WHERE username='$username'"; $retval=mysql_query($sql, $conn) or die("Could not perform query" .mysql_error()); while($row=mysql_fetch_array($retval)){ echo {$row['message']}; } mysql_free_result($retval); mysql_close($conn); } else{ return false; header("Location:login.php"); } ?>