1)ok, first off, we will need to make a NEW file and call is db.php
2)include the following code in it.(remember to use the same information from the db_connect.php so you can work off the same database.
CODE
<?
$dbhost = 'localhost';
$dbusername = 'username';
$dbpasswd = 'password';
$database_name = 'databasename';
$connection = mysql_connect("$dbhost","$dbusername","$dbpasswd")
or die ("Couldn't connect to server.");
$db = mysql_select_db("$database_name", $connection)
or die("Couldn't select database.");
?>
$dbhost = 'localhost';
$dbusername = 'username';
$dbpasswd = 'password';
$database_name = 'databasename';
$connection = mysql_connect("$dbhost","$dbusername","$dbpasswd")
or die ("Couldn't connect to server.");
$db = mysql_select_db("$database_name", $connection)
or die("Couldn't select database.");
?>
3)Now save it and open your phpadmin
4)under the same username/password as your user database, create a new database with the following query.
CODE
CREATE TABLE `messages` (
`id` int(11) NOT NULL auto_increment,
`reciever` varchar(25) NOT NULL default '',
`sender` varchar(25) NOT NULL default '',
`subject` text NOT NULL,
`message` longtext NOT NULL,
`recieved` enum('1','0') default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
`id` int(11) NOT NULL auto_increment,
`reciever` varchar(25) NOT NULL default '',
`sender` varchar(25) NOT NULL default '',
`subject` text NOT NULL,
`message` longtext NOT NULL,
`recieved` enum('1','0') default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
now go to your users table and add a field under username and call it pm_count with a default value of 0.
5)ok, now we are going to create a new file and call it inbox.php
6)put the following code into it:
CODE
<?
require('db_connect.php'); // database connect script.
session_start();
$user = $_SESSION['username'];
include 'db.php';
if(!$user)
{
echo "<br><p>You are not logged in. Please go and log in.</p><br>";
}
else
{
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
$percent = $pm_count/'50';
$percent = $percent * '100';
?>
<html>
<head>
<title>Inbox</title>
</head>
<body>
<center><b><p><? echo "$pm_count"." of 50 Total | "."$percent"."% full"; ?></p></b>
</center>
<br>
<?
$query = "SELECT id, sender, subject, message FROM messages WHERE reciever='$user'";
$sqlinbox = mysql_query($query);
if(!$sqlinbox)
{
?>
<p><? print '$query: '.$query.mysql_error();?></p>
<?
}
elseif (!mysql_num_rows($sqlinbox) )
{
?>
<center><p><b>You have no messages to display</b></p></center>
<?
}
else
{
?>
<center>
<form name="send" method="post" action="deletemsg.php">
<table width="80%">
<tr>
<td width="75%" valign="top"><p><b><u>Subject</u></b></p></td>
<td width="120px" valign="top"><p><b><u>Sender</u></b></p></td>
<td width="25px" valign="top"><p><b><u>Select</u></b></p></td>
</tr>
<?
while($inbox = mysql_fetch_array($sqlinbox))
{
$pm_id = $inbox['id'];
$sender = $inbox['sender'];
$subject = $inbox['subject'];
?>
<tr>
<td width="75%" valign="top"><p><a href="viewmsg.php?msg_id=<? echo $pm_id; ?>"><? echo $subject; ?></a></p></td>
<td width="120px" valign="top"><p><? echo $sender; ?></p></td>
<td width="25px" valign="top"><input name="pms[]" type="checkbox" value="<? echo $pm_id; ?>"></td>
</tr>
<?
}
?>
<tr>
<td colspan="3"><input type="submit" name="Submit" value="Delete Selected"></td>
<td></td>
<td></td>
</tr>
</table>
</center>
<?
}
}
?>
</body>
<html>
require('db_connect.php'); // database connect script.
session_start();
$user = $_SESSION['username'];
include 'db.php';
if(!$user)
{
echo "<br><p>You are not logged in. Please go and log in.</p><br>";
}
else
{
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
$percent = $pm_count/'50';
$percent = $percent * '100';
?>
<html>
<head>
<title>Inbox</title>
</head>
<body>
<center><b><p><? echo "$pm_count"." of 50 Total | "."$percent"."% full"; ?></p></b>
</center>
<br>
<?
$query = "SELECT id, sender, subject, message FROM messages WHERE reciever='$user'";
$sqlinbox = mysql_query($query);
if(!$sqlinbox)
{
?>
<p><? print '$query: '.$query.mysql_error();?></p>
<?
}
elseif (!mysql_num_rows($sqlinbox) )
{
?>
<center><p><b>You have no messages to display</b></p></center>
<?
}
else
{
?>
<center>
<form name="send" method="post" action="deletemsg.php">
<table width="80%">
<tr>
<td width="75%" valign="top"><p><b><u>Subject</u></b></p></td>
<td width="120px" valign="top"><p><b><u>Sender</u></b></p></td>
<td width="25px" valign="top"><p><b><u>Select</u></b></p></td>
</tr>
<?
while($inbox = mysql_fetch_array($sqlinbox))
{
$pm_id = $inbox['id'];
$sender = $inbox['sender'];
$subject = $inbox['subject'];
?>
<tr>
<td width="75%" valign="top"><p><a href="viewmsg.php?msg_id=<? echo $pm_id; ?>"><? echo $subject; ?></a></p></td>
<td width="120px" valign="top"><p><? echo $sender; ?></p></td>
<td width="25px" valign="top"><input name="pms[]" type="checkbox" value="<? echo $pm_id; ?>"></td>
</tr>
<?
}
?>
<tr>
<td colspan="3"><input type="submit" name="Submit" value="Delete Selected"></td>
<td></td>
<td></td>
</tr>
</table>
</center>
<?
}
}
?>
</body>
<html>
7)now you will save it.
8)create a new file and call it deletemsg.php and insert the following code:
CODE
<?
session_start();
header("Location:inbox.php");
$user = $_SESSION['username'];
include 'db.php';
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
foreach($_POST['pms'] as $num => $pm_id)
{
mysql_query("DELETE FROM messages WHERE id='$pm_id' AND reciever='$user'");
$pm_count = $pm_count - '1';
mysql_query("UPDATE users SET pm_count='$pm_count' WHERE username='$user'");
}
?>
session_start();
header("Location:inbox.php");
$user = $_SESSION['username'];
include 'db.php';
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
foreach($_POST['pms'] as $num => $pm_id)
{
mysql_query("DELETE FROM messages WHERE id='$pm_id' AND reciever='$user'");
$pm_count = $pm_count - '1';
mysql_query("UPDATE users SET pm_count='$pm_count' WHERE username='$user'");
}
?>
9)save it and create a new file called viewmsg.php and insert the follwoing code:
CODE
<?
require('db_connect.php'); // database connect script.
session_start();
$user = $_SESSION['username'];
if(!$user)
{
echo "<br><p>You are not logged in. Please go log in.</p><br>";
}
else
{
$msg_id = $_REQUEST['msg_id'];
$view_msg = mysql_query("SELECT * FROM messages WHERE id = '$msg_id'");
$msg = mysql_fetch_array($view_msg);
$reciever = $msg['reciever'];
$sender = $msg['sender'];
$subject = $msg['subject'];
$message = $msg['message'];
if($reciever == $user)
{
mysql_query("UPDATE messages SET recieved='1' WHERE id = '$msg_id'");
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
$percent = $pm_count/'50';
$percent = $percent * '100';
?>
<html>
<head>
<title>View Message</title>
</head>
<body>
<center><b><p><table width="80%">
<tr>
<td width="120px"><p>From:</p></td>
<td width=""><p><a href = "<? echo "../members.php?art=$sender"; ?>"><? echo $sender; ?></a></p></td>
</tr>
<tr>
<td width="120px"><p>Subject:</p></td>
<td width=""><p><? echo $subject; ?></p></td>
</tr>
<tr>
<td width="120px"><p>Message Body:</p></td>
<td width=""><p><? echo $message; ?></p></td>
</tr>
</table>
</center>
<?
}
else
{
?>
<p>It appears you are trying to view someone else's private message. Please view your own private messages, or go away.</p>
<?
}
}
?>
</body>
<html>
require('db_connect.php'); // database connect script.
session_start();
$user = $_SESSION['username'];
if(!$user)
{
echo "<br><p>You are not logged in. Please go log in.</p><br>";
}
else
{
$msg_id = $_REQUEST['msg_id'];
$view_msg = mysql_query("SELECT * FROM messages WHERE id = '$msg_id'");
$msg = mysql_fetch_array($view_msg);
$reciever = $msg['reciever'];
$sender = $msg['sender'];
$subject = $msg['subject'];
$message = $msg['message'];
if($reciever == $user)
{
mysql_query("UPDATE messages SET recieved='1' WHERE id = '$msg_id'");
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
$percent = $pm_count/'50';
$percent = $percent * '100';
?>
<html>
<head>
<title>View Message</title>
</head>
<body>
<center><b><p><table width="80%">
<tr>
<td width="120px"><p>From:</p></td>
<td width=""><p><a href = "<? echo "../members.php?art=$sender"; ?>"><? echo $sender; ?></a></p></td>
</tr>
<tr>
<td width="120px"><p>Subject:</p></td>
<td width=""><p><? echo $subject; ?></p></td>
</tr>
<tr>
<td width="120px"><p>Message Body:</p></td>
<td width=""><p><? echo $message; ?></p></td>
</tr>
</table>
</center>
<?
}
else
{
?>
<p>It appears you are trying to view someone else's private message. Please view your own private messages, or go away.</p>
<?
}
}
?>
</body>
<html>
10)save the file and create a new file
11)call it compose.php and insert the following code into it:
CODE
<?
session_start();
$user = $_SESSION['username'];
include 'db.php';
if(!$user)
{
echo "<br><p>You are not logged in, please do so.</p><br>";
}
else
{
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
$percent = $pm_count/'50';
$percent = $percent * '100';
?>
<html>
<head>
<title>Compose Message</title>
</head>
<body>
<b><p><? echo "$pm_count"." of 50 Total | "."$percent"."% full"; ?></p></b>
</center>
<br>
<?php
//So here we get the variable submitted through the form to this page
$reciever = $_POST['username'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$error = '0';
//If they are all blank we jsut say to compose a message
if(!$reciever AND !$subject AND !$message)
{
?>
<p><b>Please compose a message.</b></p>
<br>
<?php
}
//Since this form was partially filled out we need to return an error message
else
{
if (!$reciever)
{
$error = 'You must enter a reciever to your message';
}
if (!$subject)
{
$error = 'You must enter a subject';
}
if (!$message)
{
$error = 'You must enter a message';
}
//If the variable error is not set to zero, we have a problem and should show the error message
if($error != '0')
{
echo "<p>$error</p><br>";
}
//There are no errors so far which means the form is completely filled out
else
{
//Are the trying to send a message to a real user or to something they just made up?
$user_check = mysql_query("SELECT username FROM users WHERE username='$reciever'");
$user_check = mysql_num_rows($user_check);
//The user is real and not made up if this is true
if($user_check > '0')
{
//There might already be a sessioned time variable, if so we need to get it for the flood check
$time = $_SESSION['time'];
//If there is a time variable already, set it to the varialbe $old_time
if($time > '0')
{
$old_time = $time;
}
//Here we get the minutes and seconds on the server time using the date function, and set that to the $time variable
//Now we find the difference between this time ($time) and the time that the page was submitted ($old_time)
$time = date('is');
$difference = $time - $old_time;
$_SESSION['time'] = $time;
//If the two times have a difference greater or equal to 15, which is 15 seconds, they can submit the message, this is for flood protection
if($difference >= '15')
{
//Get their private message count
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$reciever'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
//You cant have more than 50 private messages, if they try sending a message to a user with a full inbox return an error message
if(pm_count == '50')
{
$error = 'The user you are trying to send a message to has 50 private messages, sorry but we cant send your message untill that user deletes some of their messages.';
}
else
{
//And not we stick the message in the database with all the correct information
mysql_query("INSERT INTO messages (reciever, sender, subject, message) VALUES('$reciever', '$user', '$subject', '$message')") or die (mysql_error());
}
//Let the user know everything went ok.
echo "<p><b>You have successfully sent a private message!</b></p><br>";
}
//Since they are trying to send messages faster than every 15 seconds, give them an error message
else
{
$error = 'You must wait 15 seconds before sending another private message';
}
}
//If they mis spelled or, made up a username, then give an error message telling them its wrong.
else
{
$error = 'That username does not exist, please try again. Remember to check your spelling, and dont make stuff up at random.';
}
}
}
//Since we may have set the error variable to something while trying to send the messae, we need another error check
if($error != '0')
{
echo "<p>$error</p><br>";
}
else
{
//Here's the form for the input
?>
<form name="send" method="post" action="compose.php">
<table width="80%">
<tr>
<td width="150px" align="left" valign="top"><p>Username</p></td>
<td width="" align="left" valign="top"><input name="username" type="text" id="username" value="<? echo "$reciever"; ?>"></td>
</tr>
<tr>
<td width="150px" align="left" valign="top"><p>Subject</p></td>
<td width="" align="left" valign="top"><input name="subject" type="text" id="subject" value="<? echo "$subject"; ?>"></td>
</tr>
<tr>
<td width="150px" align="left" valign="top"><p>Message Body</p></td>
<td width="" align="left" valign="top"><textarea name="message" type="text" id="message" value="" cols="50" rows="10"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="Submit" value="Send Message"></td>
</tr>
</table>
</center>
</form>
<?php
}
?>
</body>
</html>
session_start();
$user = $_SESSION['username'];
include 'db.php';
if(!$user)
{
echo "<br><p>You are not logged in, please do so.</p><br>";
}
else
{
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
$percent = $pm_count/'50';
$percent = $percent * '100';
?>
<html>
<head>
<title>Compose Message</title>
</head>
<body>
<b><p><? echo "$pm_count"." of 50 Total | "."$percent"."% full"; ?></p></b>
</center>
<br>
<?php
//So here we get the variable submitted through the form to this page
$reciever = $_POST['username'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$error = '0';
//If they are all blank we jsut say to compose a message
if(!$reciever AND !$subject AND !$message)
{
?>
<p><b>Please compose a message.</b></p>
<br>
<?php
}
//Since this form was partially filled out we need to return an error message
else
{
if (!$reciever)
{
$error = 'You must enter a reciever to your message';
}
if (!$subject)
{
$error = 'You must enter a subject';
}
if (!$message)
{
$error = 'You must enter a message';
}
//If the variable error is not set to zero, we have a problem and should show the error message
if($error != '0')
{
echo "<p>$error</p><br>";
}
//There are no errors so far which means the form is completely filled out
else
{
//Are the trying to send a message to a real user or to something they just made up?
$user_check = mysql_query("SELECT username FROM users WHERE username='$reciever'");
$user_check = mysql_num_rows($user_check);
//The user is real and not made up if this is true
if($user_check > '0')
{
//There might already be a sessioned time variable, if so we need to get it for the flood check
$time = $_SESSION['time'];
//If there is a time variable already, set it to the varialbe $old_time
if($time > '0')
{
$old_time = $time;
}
//Here we get the minutes and seconds on the server time using the date function, and set that to the $time variable
//Now we find the difference between this time ($time) and the time that the page was submitted ($old_time)
$time = date('is');
$difference = $time - $old_time;
$_SESSION['time'] = $time;
//If the two times have a difference greater or equal to 15, which is 15 seconds, they can submit the message, this is for flood protection
if($difference >= '15')
{
//Get their private message count
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$reciever'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
//You cant have more than 50 private messages, if they try sending a message to a user with a full inbox return an error message
if(pm_count == '50')
{
$error = 'The user you are trying to send a message to has 50 private messages, sorry but we cant send your message untill that user deletes some of their messages.';
}
else
{
//And not we stick the message in the database with all the correct information
mysql_query("INSERT INTO messages (reciever, sender, subject, message) VALUES('$reciever', '$user', '$subject', '$message')") or die (mysql_error());
}
//Let the user know everything went ok.
echo "<p><b>You have successfully sent a private message!</b></p><br>";
}
//Since they are trying to send messages faster than every 15 seconds, give them an error message
else
{
$error = 'You must wait 15 seconds before sending another private message';
}
}
//If they mis spelled or, made up a username, then give an error message telling them its wrong.
else
{
$error = 'That username does not exist, please try again. Remember to check your spelling, and dont make stuff up at random.';
}
}
}
//Since we may have set the error variable to something while trying to send the messae, we need another error check
if($error != '0')
{
echo "<p>$error</p><br>";
}
else
{
//Here's the form for the input
?>
<form name="send" method="post" action="compose.php">
<table width="80%">
<tr>
<td width="150px" align="left" valign="top"><p>Username</p></td>
<td width="" align="left" valign="top"><input name="username" type="text" id="username" value="<? echo "$reciever"; ?>"></td>
</tr>
<tr>
<td width="150px" align="left" valign="top"><p>Subject</p></td>
<td width="" align="left" valign="top"><input name="subject" type="text" id="subject" value="<? echo "$subject"; ?>"></td>
</tr>
<tr>
<td width="150px" align="left" valign="top"><p>Message Body</p></td>
<td width="" align="left" valign="top"><textarea name="message" type="text" id="message" value="" cols="50" rows="10"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="Submit" value="Send Message"></td>
</tr>
</table>
</center>
</form>
<?php
}
?>
</body>
</html>
12)hopefully your still interested, cause we are almost done!!!
13)now create a new file and call it sent.php and insert the following code into it:
CODE
<?
require('db_connect.php'); // database connect script.
session_start();
$user = $_SESSION['username'];
include 'db.php';
//Are they logged in or not?
if(!$user)
{
echo "<br><p>You arent logged in, please do so.</p><br>";
}
else
{
//Get your private message count
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
$percent = $pm_count/'50';
$percent = $percent * '100';
?>
<html>
<head>
<title>Sent Messages</title>
</head>
<body>
<center><b><p><? echo "$pm_count"." of 50 Total | "."$percent"."% full"; ?></p></b>
</center>
<br>
<?
$query = "SELECT * FROM messages WHERE sender='$user' AND recieved='0'";
$sqlinbox = mysql_query($query);
if(!$sqlinbox)
{
?>
<p><? print '$query: '.$query.mysql_error();?></p>
<?
}
elseif (!mysql_num_rows($sqlinbox) )
{
?>
<p><b>You have no un-recieved messages to display</b></p>
<?
}
else
{
?>
<table width="80%" border="0">
<tr>
<td width="" valign="top"><p><b><u>Subject</u></b></p></td>
<td width="120px" valign="top"><p><b><u>Sender</u></b></p></td>
</tr>
<?
while($inbox = mysql_fetch_array($sqlinbox))
{
$reciever = $inbox['reciever'];
$subject = $inbox['subject'];
?>
<tr>
<td width="" valign="top"><p><? echo "$subject"; ?></p></td>
<td width="120px" valign="top"><p><? echo "$reciever"; ?></p></td>
</tr>
<?
}
echo "</table>";
}
}
?>
</body>
</html>
require('db_connect.php'); // database connect script.
session_start();
$user = $_SESSION['username'];
include 'db.php';
//Are they logged in or not?
if(!$user)
{
echo "<br><p>You arent logged in, please do so.</p><br>";
}
else
{
//Get your private message count
$sql = mysql_query ("SELECT pm_count FROM users WHERE username='$user'");
$row = mysql_fetch_array ($sql);
$pm_count = $row['pm_count'];
$percent = $pm_count/'50';
$percent = $percent * '100';
?>
<html>
<head>
<title>Sent Messages</title>
</head>
<body>
<center><b><p><? echo "$pm_count"." of 50 Total | "."$percent"."% full"; ?></p></b>
</center>
<br>
<?
$query = "SELECT * FROM messages WHERE sender='$user' AND recieved='0'";
$sqlinbox = mysql_query($query);
if(!$sqlinbox)
{
?>
<p><? print '$query: '.$query.mysql_error();?></p>
<?
}
elseif (!mysql_num_rows($sqlinbox) )
{
?>
<p><b>You have no un-recieved messages to display</b></p>
<?
}
else
{
?>
<table width="80%" border="0">
<tr>
<td width="" valign="top"><p><b><u>Subject</u></b></p></td>
<td width="120px" valign="top"><p><b><u>Sender</u></b></p></td>
</tr>
<?
while($inbox = mysql_fetch_array($sqlinbox))
{
$reciever = $inbox['reciever'];
$subject = $inbox['subject'];
?>
<tr>
<td width="" valign="top"><p><? echo "$subject"; ?></p></td>
<td width="120px" valign="top"><p><? echo "$reciever"; ?></p></td>
</tr>
<?
}
echo "</table>";
}
}
?>
</body>
</html>
14)and save it.
you are done!! you have just made a personal message system that only YOUR members can access!!! please keep tuning in for the rest of the user system tutorials!!
thank you and good night!