Система за изпращане на лични съобщения

Добре сега когато тръгна да си разглеждам личните съобщения и ми казва , че нямам лични съобщения ?

ето го и кода

PHP:
<html>
<head>
<title>
Преглед на Съобщение
</title>
</head>
<body>
<?php
$link=mysql_connect("localhost", "root", "") or die (mysql_error());/* променете в зависимост от вашите настройки*/
mysql_query("SET NAMES cp1251");
mysql_select_db("topracers") or die (mysql_error()); /*на мястото на "test" напишете името на базата данни, която използвате*/
$user_id=$_SESSION['is_logged']; 
session_start();
$q="SELECT *
    FROM messages
    WHERE `id`='$_GET[id]' AND `receiver_id`='$user_id'";
$r=mysql_query($q, $link) or die (mysql_error());
$row=mysql_fetch_array($r);
if (mysql_num_rows($r)==0){
    echo "<div style='background-color:#ff8888' align='center'>Съжалявам, но не откривам резултат.</div>";
} else {
$sender_id=$row['sender_id'];
$title=$row['title'];
$message=$row['message'];
$time=$row['time'];
$date=date('d-m-Y в G:i ч.', $time);
$read=$row['read'];
$q_user="SELECT name
        FROM users
        WHERE id='$sender_id'";
$r_user=mysql_query($q_user) or die (mysql_error());
$row=mysql_fetch_array($r_user);
$sender_name=$row['name'];
if ($read==0){
$q_read="UPDATE messages 
        SET `read` = '1' 
        WHERE `id` =$_GET[id]";
$r_read=mysql_query($q_read) or die (mysql_error());
}
echo "<hr>От:";
echo $sender_name;
echo "<br />Относно:";
echo $title;
echo "<br />Изпратен на:";
echo $date;
echo "<br />Съобщение:<p>";
echo $message . "</p><hr>";
}
?>
</body>
</html>

Извинявам се предварително но ми е трудно все още....
 
Това $user_id=$_SESSION['is_logged']; ти го бях дал като пример, в твоя случай е

PHP:
function get_logged_id($username) {
        $query = mysql_query("SELECT * FROM `users` WHERE `username`='{$username}';")or die(mysql_error());
        $row = mysql_fetch_object($query);
        return $row->id;
}
$user_id = get_logged_id($_SESSION['username']);

Ама незнам това поле reciver_id дали е наистина е по ID, или е по ИМЕ. Ако е по ID - Ползваш примера горе който дадох, ако ли не (тоест е по име) ползваш това:

PHP:
$user_id = $_SESSION['username'];
 
Когато сложа

PHP:
$user_id = $_SESSION['username'];

Ми изкарва грешка ред 16 и 19

което е съответно ред 16:

PHP:
$user_id = $_SESSION['username'];

и ред 19:

PHP:
    WHERE `id`='$_GET[id]' AND `receiver_id`='$user_id'";

когато сложа

PHP:
$user_id = get_logged_id($_SESSION['username']);

Просто ми го изкарва като грешка на реда които е кода...
 
Употребата на session_register() е непрепоръчителна, препоръчително е да се използва $_SESSION от PHP 4.x.x


Тоест. При вход в системата използвай $_SESSION записвай неговото потребителско име и не записвай паролата в сесия/бисквитка/ не е много удачно.

След, което с функцията която ти дадох /може да се напише и по - добър вариант/ я използвай за да взимаш ID-то на регистрирания потребител от базата данни.

Кажи какви грешки ти дава , не сме магове, врачки за да знаем.

session_start(); се използва в началото на файла.

Също така не е хубаво $_GET да го използваш директно в заявките.

Пробвай така:

PHP:
<?php
session_start();
?>
<html>
<head>
	<title>Преглед на Съобщение</title>
</head>
<body>
<?php
$link = mysql_connect("localhost", "root", "") or die (mysql_error());/* променете в зависимост от вашите настройки*/
mysql_query("SET NAMES cp1251");
mysql_select_db("topracers") or die (mysql_error()); /*на мястото на "test" напишете името на базата данни, която използвате*/

function get_logged_id($username) {
        $query = mysql_query("SELECT * FROM `users` WHERE `username`='{$username}';")or die(mysql_error());
        $row = mysql_fetch_object($query);
        return $row->id;
}
if(isSet($_SESSION['is_logged'])) {
$user_id = get_logged_id($_SESSION['is_logged']);
} else {
$user_id = "";
}
if(isSet($_GET['id'])) {
	$get_id = (int)$_GET['id'];
} else {
	$get_id = "";
}
$query = mysql_query("SELECT * FROM `messages` AS mess, `users` AS us WHERE mess.id='$get_id' 
AND mess.receiver_id='$user_id' 
AND mess.sender_id=us.id;") or die (mysql_error());
if (mysql_num_rows($query) > 0){
	while($row = mysql_fetch_array($query)) {
		$title = $row['title'];
		$message = $row['message'];
		$date = date('d-m-Y в G:i ч.', $row['time']);
		$read = $row['read'];
		$sender_name = $row['name'];
		if ($read == 0){
			mysql_query("UPDATE messages SET `read` = '1' WHERE `id` ='$get_id'";) or die (mysql_error());
		}
		echo "<hr>От: {$sender_name} <br />Относно: {$title} <br />Изпратен на: {$date} <br />Съобщение:<p> {$message} </p><hr />";
	}
} else {
    echo "<div style='background-color:#ff8888' align='center'>Съжалявам, но не откривам резултат.</div>";
}
?>
</body>
</html>

Също така вместо да пишеш по сто пъти connect-а към MySQL си създай няк'в файл например:
cfg.php
config.php..

и след session_start(); го include-ни

include("config.php");

Функцията също можеш да я вкараш в config.php или в друг файл /в случай, че използваш повече функции/
 
когато копирам php кодът които ми даде ми излиза на 1 ред ?????!?!!?!?!?!?!?!?!??! и немога да разбера къде ми дава грешка ??! :D :D вече ще се самоубия :D
 

Back
Горе