2013-09-26 6 views
0

на моем сайте я получил firebase чат работает с именем + аутентификации PIN требуется после входа на сайт и открыть окно чата (здесь наиболее важные три метки на этом посту:значение MySQL в HTML форме

<div id='messagesDiv'></div> 
    <input type='hidden' id='nameInput' value=''> 
    <input type='text' id='messageInput' placeholder='Message'> 

) Я хочу, чтобы значение id='nameInput' было именем пользователя в базе данных sql. структура SQL является

Database: 

"xxxx_usr" 
User: 
"xxxx_usr" 
Host: 
"Localhost" 
Table: 
"Users" 
Table; 

Users: 

------------------------------ 
id | username | password | 
1  | Name  | ****** | 
2  | Name2  | ****** | 
------------------------------ 

и конец сценария входа в систему является

session_register("myusername"); 
    session_register("mypassword"); 
    header("location:sucsess.html"); 

так есть ли способ использовать этот

session.register("myusername") 

изменить

<input type='hidden' id='nameInput' value=''> 

значение для зарегистрированного имени пользователя php на двух страницах e arlier, скажем, имя, так что все сообщения чата, которые отправил пользователь, будут отправляться от имени.

и какой должен быть полный controll.php? теперь он выглядит как

после редактирования предложил он выглядит как

<?php 

$host="localhost"; // Host name 
$username="*******_usr"; // Mysql username 
$password="*******"; // Mysql password 
$db_name="*******_usr"; // Database name 
$tbl_name="Users"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// username and password sent from form 
$myusername=$_POST['username']; 
$mypassword=$_POST['password']; 

// To protect MySQL injection (more detail about MySQL injection) 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 

// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 

// Register $myusername, $mypassword and redirect to file "login_success. 
if (!isset ($_SESSION)) session_start(); 

$_SESSION["myusername"] = $username; 
$_SESSION["mypassword"] = $password; 
header("Location:sucsess.html"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

becuase после редактирования я могу sucsess.html Хороший доступ без регистрации или это может быть выходом из системы кода, что это неправильно?

<?php 
session_destroy(); 
?< 

или код, который перенаправляет не авторизованных пользователей?

<?php 
session_start(); 
if(!session_is_registred(myusername)) { 
header("Location:index.html") 
} 
?> 

Спасибо за ваш ответ

ответ

0

Для того, чтобы использовать переменные сеанса использовать $_SESSION массив вместо session_register() который устарел.

//start session if it has not been started. 
if (!isset ($_SESSION)) session_start(); 


$_SESSION["myusername"] = $username; //comes form db 
$_SESSION["mypassword"] = $password; //from db 

А вы можете назвать, где когда-либо сессии значения

<input type="hidden" id="nameInput" value="<?php echo $_SESSION['myusername'] ?>"> 
+0

Использование параметризованных запросов, чтобы избежать инъекции SQL. Помимо использования mysqli или PDO, mysql_ * также устарел. Другой заголовок 'point ('Location: success.html'); L должен быть капиталом. ' – zkanoca

+0

@ пользователь2818691 да, можете использовать. но у вас есть риски – zkanoca

+0

У меня код, чтобы избежать инъекции mysql. могу ли я по-прежнему использовать мой код, чтобы проверить, что вход в систему и мой код выхода выглядит следующим образом: if logged in: ' '(перенаправление неавторизованных пользователей) и выход из системы:' '? – user2818691

Смежные вопросы