1

Тема: Потрібно вивести дані з бази в браузер!

Маю код який виводить в браузер дані з бази. При вході в профіль через Cookies сохраняється логін і дальше він передається цьому коду який виводить в браузер,

<?php
if (!empty($_GET['NickName'])){
$aNickName = $_GET['NickName'];

$aWhatStat = "";
$aWhatSkill = "";
// Узнаем характеристики персонажа

$mysql_host = "localhost";
$mysql_user = "root";
$mysql_password = "";
$my_database = "test";

$link = mysql_connect($mysql_host, $mysql_user, $mysql_password)
or die("Could not connect : " . mysql_error());
mysql_select_db($my_database) or die("Could not select database");

$query = "SELECT * FROM users WHERE Nick_Name='$aNickName'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);

$aStrength = $aRow["Character_Strength"];
$aEndurance = $aRow["Character_Endurance"];
$aAccuracy = $aRow["Character_Accuracy"];
$aDexterity = $aRow["Character_Dexterity"];
$aNotUsedStats = $aRow["Character_UnUsed_Points"];
$aSwordSkill = $aRow["Character_Sword"];
$aSpearSkill = $aRow["Character_Spear"];
$aMaceSkill = $aRow["Character_Mace"];
$aAxeSkill = $aRow["Character_Axe"];
$aDaggerSkill = $aRow["Character_Dagger"];
$aCharLevel = $aRow["Character_Level"];
$aMoney = $aRow["Character_Money"];
mysql_free_result($result);
}
?>






<div id="wrapper">
  <div id="content">

    

<table border="1" width="183" height="228" cellspacing="0" cellpadding="0" bgcolor="#BFBFBF" bordercolor="#666699">
<tr>

<td width="27" height="32" rowspan="2" colspan="2" valign="top"><img src="items\helmet_empty.jpg"></td>
<td width="99" height="176" rowspan="5" valign="top" colspan="2">


<table border="2" cellspacing=0 cellpadding=0 border="0" bordercolor="#000080">
<tr><td>
<NOBR>
<div id=HP>
<IMG SRC="items/herz.gif" ALT="Уровень жизни"> <IMG SRC=1silver.gif WIDTH=1 HEIGHT=10 ALT="Уровень жизни" name=HP1><IMG SRC=1silver.gif WIDTH=1 HEIGHT=10 ALT="Уровень жизни" name=HP2>:
</div>
</nobr>
</table>


<img border="0" name = "mainimage" src="items/pers.jpg">

<!-- Тут размещено характеристика  -->
<HR>
<font color="#000080">
--: <?php echo "$aStrength"; ?><br>
--: <?php echo "$aDexterity"; ?><br>
--: <?php echo "$aAccuracy"; ?><br>
--: <?php echo "$aEndurance"; ?><br>  
<HR>
--: 0 <br>
--: 0<br>
--: 0 <br>
--: 0<br>
--: 0<br>
<HR>
--: </font><b><font color="#FF0000"><?php echo "$aMoney"; ?> </font></b> <font color="#000080"><br>
<!-- Конец Секции-->

</td>
<td width="49" height="23" colspan="2" valign="top"><img src="items\ear_empty.jpg"></td>
</tr>
<tr>
<td width="49" height="2" colspan="2" valign="top"><img src="items\necklace_empty.jpg"></td>
</tr>
<tr>
<td width="27" height="80" colspan="2" valign="top"><img src="items\weapon_empty.jpg"></td>
<td width="49" height="80" colspan="2" valign="top"><img src="items\shield_empty.jpg"></td>
</tr>
<tr>
<td width="1" height="24" valign="top"><img src="items\ring_empty.jpg"></td>
<td width="25" height="24" valign="top"><img src="items\ring_empty.jpg"></td>
<td width="22" height="24" valign="top"><img src="items\ring_empty.jpg"></td>
<td width="26" height="24" valign="top"><img src="items\ring_empty.jpg"></td>
</tr>
<tr>
<td width="27" height="77" colspan="2" rowspan="2" valign="top"><img src="items\armor_empty.jpg"></td>
<td width="49" height="40" colspan="2" valign="top"><img src="items\gloves_empty.jpg"></td>
</tr>
<tr>
<td width="99" height="34" valign="top" colspan="2">&nbsp;</td>
<td width="49" height="31" colspan="2" valign="top" rowspan="2"><img src="items\shoes_empty.jpg"></td>
</tr>
<tr>
<td width="27" height="1" colspan="2" valign="top"><img src="items\belt_empty.jpg"></td>
<td width="44" height="3" valign="top">&nbsp;</td>
<td width="53" height="3" valign="top">&nbsp;</td>
</tr>
</table>


    </div>
  </div>
</div>

Все працює! Але я не дружу з Cookies, тільки з сесіями і то так собі )
Мені ось що цікаво, як можна замінити декотрі фрагменти коду щоб він не потребував логіну з Cookies а потребував з сесій?

2

Re: Потрібно вивести дані з бази в браузер!

Не бачу, де у цьому коді зустрічаються $_COOKIE або $_SESSION, які мали би втілити той чи інший логін-варіант.

З.І: де тут БД, Faraon? Питання же про PHP.

3 Востаннє редагувалося Faraon (01.06.2013 01:15:25)

Re: Потрібно вивести дані з бази в браузер!

Bartash написав:

З.І: де тут БД, Faraon? Питання же про PHP.

м...це ж стосується бази даних пиання,

Не бачу, де у цьому коді зустрічаються $_COOKIE або $_SESSION, які мали би втілити той чи інший логін-варіант.

$_SESSION -тут і не мало зустрічатися! Тут береться логін з головної сторінки (з якої я увійшов) через COOKIE (мені так здається)
якщо ні, то що тоді це за мова? Ось код входу в профіль

<head>
<SCRIPT>
function setCookie(name, value) {
  document.cookie = name+"="+escape(value)+"; path=/";
}
</SCRIPT>
  </head>
<body>

<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '';
$my_database = 'test';

if ((!empty($_POST['login'])) && (!empty($_POST['pass'])) )
{
$aNickName = $_POST['login'];
$aUserPass = $_POST['pass'];

$link = mysql_connect($mysql_host, $mysql_user, $mysql_password)
or die("Could not connect : " . mysql_error());
mysql_select_db($my_database) or die("Could not select database");

$query = "SELECT * FROM users where Nick_Name='$aNickName' and User_Pass='$aUserPass'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$line = mysql_fetch_array($result);
$aRes = $line["Nick_Name"];
if( $aRes === $aNickName )
{
$aRandVal = rand(0,1000000000);
$query = "UPDATE users SET SessionID='$aRandVal' WHERE Nick_Name='$aNickName'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
print('<SCRIPT>setCookie("MMCLUB_NICK_NAME","'.$aNickName.'");</SCRIPT>');
print('<SCRIPT>setCookie("MMCLUB_SESSION","'.$aRandVal.'");</SCRIPT>');
print('<SCRIPT>location.href="prof.php?NickName='.$aNickName.'";</SCRIPT>');
}
}

?>

При переході в профіль урл стає ось такий

http://localhost/test/prof.php?NickName=Faraon

А пізніше через цю мову програмування (мені здається що це COOKIE) береться нік пользователя і через него виводяться в браузер дані з  таблиці (код я виставив на самому початку), а як можна зробити це через снсії ?

4

Re: Потрібно вивести дані з бази в браузер!

м...це ж стосується бази даних пиання,

У базі логічно тримати список юзерів (ну і ще, мо, історію авторизацій для пильнування). Якщо авторизація у скрипті успішна, заносите відповідні значення як асоціативні елементи масиву $_SESSION. При цьому у коді скрипта на самому початку слід поставити

session_start();

для уможливлення сесій. У цьому разі дані сесії будуть доступні, поки не викличете де-небудь session_destroy().

$_SESSION -тут і не мало зустрічатися! Тут береться логін з головної сторінки (з якої я увійшов) через COOKIE (мені так здається)
якщо ні, то що тоді це за мова?

Та, я не одразу побачив у коді setCookie() і такий стиль розміщення коду загалом недобрий, але то з часом прийде.

І все ж ваше питання, імго, все ж варто віднести до PHP. Зберігання даних сесії у базі можливе (і деякі фреймворки це успішно і зручно дозволяють зробити), але.. для чого? У вас там величезний проект на кілька серверів/сервісів/ресурсів? Якщо ні, то звичайного $_SESSION має вистачити з головою. :)

5

Re: Потрібно вивести дані з бази в браузер!

Приблизний приклад, коли форма авторизації орієнтована на той самий скрипт:

 <?php 
 // this starts the session 
 session_start(); 
 
if(isset($_SESSION['user'] /*etc*/)
{
//Авторизований, можна щось робити
}
else if(isset($_POST['user']) && isset($_POST['pwd'] /*etc*/)
{
// Дані у формі введено, треба їх перевірити.

//Тут перевірка даних у базі, і коли все коректно, то
$_SESSION['user'] = $_POST['user'];
//etc
}
else
{
//Авторизацію не проходив - виводите форму авторизації
}
 ?> 

6 Востаннє редагувалося Faraon (01.06.2013 10:58:04)

Re: Потрібно вивести дані з бази в браузер!

Faraon написав:

У вас там величезний проект на кілька серверів/сервісів/ресурсів?

Ні... це можна сказати навіть наоборот, (маленький тестовий проект)

$_SESSION має вистачити з головою.

Мені якраз це і потрібно, зімінити, setCookie() на $_SESSION.  Авторизацію я переробив
логін ми отримуємо з $_SESSION['name'].
А ось що потрібно мені змінити в цьому коді php ?

<?php
if (!empty($_GET['NickName'])){
$aNickName = $_GET['NickName'];
 
$aWhatStat = "";
$aWhatSkill = "";
// Узнаем характеристики персонажа
 
$mysql_host = "localhost";
$mysql_user = "root";
$mysql_password = "";
$my_database = "test";
 
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password)
or die("Could not connect : " . mysql_error());
mysql_select_db($my_database) or die("Could not select database");
 
$query = "SELECT * FROM users WHERE Nick_Name='$aNickName'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);
 
$aStrength = $aRow["Character_Strength"];
$aEndurance = $aRow["Character_Endurance"];
$aAccuracy = $aRow["Character_Accuracy"];
$aDexterity = $aRow["Character_Dexterity"];
$aNotUsedStats = $aRow["Character_UnUsed_Points"];
$aSwordSkill = $aRow["Character_Sword"];
$aSpearSkill = $aRow["Character_Spear"];
$aMaceSkill = $aRow["Character_Mace"];
$aAxeSkill = $aRow["Character_Axe"];
$aDaggerSkill = $aRow["Character_Dagger"];
$aCharLevel = $aRow["Character_Level"];
$aMoney = $aRow["Character_Money"];
mysql_free_result($result);
}
?>
 
 
 
 
 
 
<div id="wrapper">
  <div id="content">
 
    
 
<table border="1" width="183" height="228" cellspacing="0" cellpadding="0" bgcolor="#BFBFBF" bordercolor="#666699">
<tr>
 
<td width="27" height="32" rowspan="2" colspan="2" valign="top"><img src="items\helmet_empty.jpg"></td>
<td width="99" height="176" rowspan="5" valign="top" colspan="2">
 
 
<table border="2" cellspacing=0 cellpadding=0 border="0" bordercolor="#000080">
<tr><td>
<NOBR>
<div id=HP>
<IMG SRC="items/herz.gif" ALT="Уровень жизни"> <IMG SRC=1silver.gif WIDTH=1 HEIGHT=10 ALT="Уровень жизни" name=HP1><IMG SRC=1silver.gif WIDTH=1 HEIGHT=10 ALT="Уровень жизни" name=HP2>:
</div>
</nobr>
</table>
 
 
<img border="0" name = "mainimage" src="items/pers.jpg">
 
<!-- Тут размещено характеристика  -->
<HR>
<font color="#000080">
--: <?php echo "$aStrength"; ?><br>
--: <?php echo "$aDexterity"; ?><br>
--: <?php echo "$aAccuracy"; ?><br>
--: <?php echo "$aEndurance"; ?><br>  
<HR>
--: 0 <br>
--: 0<br>
--: 0 <br>
--: 0<br>
--: 0<br>
<HR>
--: </font><b><font color="#FF0000"><?php echo "$aMoney"; ?> </font></b> <font color="#000080"><br>
<!-- Конец Секции-->
 
</td>
<td width="49" height="23" colspan="2" valign="top"><img src="items\ear_empty.jpg"></td>
</tr>
<tr>
<td width="49" height="2" colspan="2" valign="top"><img src="items\necklace_empty.jpg"></td>
</tr>
<tr>
<td width="27" height="80" colspan="2" valign="top"><img src="items\weapon_empty.jpg"></td>
<td width="49" height="80" colspan="2" valign="top"><img src="items\shield_empty.jpg"></td>
</tr>
<tr>
<td width="1" height="24" valign="top"><img src="items\ring_empty.jpg"></td>
<td width="25" height="24" valign="top"><img src="items\ring_empty.jpg"></td>
<td width="22" height="24" valign="top"><img src="items\ring_empty.jpg"></td>
<td width="26" height="24" valign="top"><img src="items\ring_empty.jpg"></td>
</tr>
<tr>
<td width="27" height="77" colspan="2" rowspan="2" valign="top"><img src="items\armor_empty.jpg"></td>
<td width="49" height="40" colspan="2" valign="top"><img src="items\gloves_empty.jpg"></td>
</tr>
<tr>
<td width="99" height="34" valign="top" colspan="2">&nbsp;</td>
<td width="49" height="31" colspan="2" valign="top" rowspan="2"><img src="items\shoes_empty.jpg"></td>
</tr>
<tr>
<td width="27" height="1" colspan="2" valign="top"><img src="items\belt_empty.jpg"></td>
<td width="44" height="3" valign="top">&nbsp;</td>
<td width="53" height="3" valign="top">&nbsp;</td>
</tr>
</table>
 
 
    </div>
  </div>
</div>

Ось цим кусокм ми витянуємо з setCookie() логін а далі підставляємо і витягуємо дані з бази,

if (!empty($_GET['NickName'])){
$aNickName = $_GET['NickName'];
 
$aWhatStat = "";
$aWhatSkill = "";

Я думав що коли я заберу setCookie а підключу $_SESSION то можна буде зробити ось так

$_SESSION['name'] = $aNickName

і все буде працювати, но я помилився!

7

Re: Потрібно вивести дані з бази в браузер!

Для того, щоб у вас робили сесії, потрібно на самому початку файлу прописати

session_start();

Якщо треба, щоб у випадку відсутності авторизації юзера викидало звідси, після session_start() зробіть перевірку

if(!issset($_SESSION['username']) )/*або щось, що ви вважаєте за факт авторизації*/
    header('Location: myloginscript.php'); # Перенаправте юзера на логін-сторінку

8

Re: Потрібно вивести дані з бази в браузер!

Bartash написав:

Для того, щоб у вас робили сесії, потрібно на самому початку файлу прописати

session_start();

Якщо треба, щоб у випадку відсутності авторизації юзера викидало звідси, після session_start() зробіть перевірку

if(!issset($_SESSION['username']) )/*або щось, що ви вважаєте за факт авторизації*/
    header('Location: myloginscript.php'); # Перенаправте юзера на логін-сторінку

Це мені відомо, помилку я виправив.
Я робив ось так:

$_SESSION['name'] = $aNickName

А потрібно було робити ось так:

$_GET['NickName'] = $_SESSION['name'];

Але все одно дуже Вам дякую за те що виділили мені час!

9

Re: Потрібно вивести дані з бази в браузер!

Прошу. :)
___


З.І: на майбутнє - є сенс користувати щось готове навіть у малих проектах. У дуже малих - Smarty, у середніх і більше - фреймворки. Проблем менше буде і типового коду менше писати доведеться. :)

10

Re: Потрібно вивести дані з бази в браузер!

Дякую, на майбутнє буду знати!