php and POST form not acting normal...

This is a discussion on php and POST form not acting normal... within the PHP Language forums, part of the PHP Programming Forums category; Hi All, I have recently built a site using PHP and MySQL, and started to implement a basic forum into ...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 12-14-2004
Alec
 
Posts: n/a
Default php and POST form not acting normal...

Hi All,

I have recently built a site using PHP and MySQL, and started to
implement a basic forum into it. However, the form to post messages
doesnt do what I want it to. If there is no user logged in (ie no
session) then it posts the message fine. But if there is a user logged
in, it loads my login.php page instead of my post.php page??? Code for
both pages below:

>>>>>>>>>READ.PHP>>>>>>>>>


<?php
session_start();
include("mngmnt.inc");
connect_to_db();
@$threadid=$_GET['thread'];
$_SESSION['page']="Forum - Read/Post";

print_header();
print_menu();

print "<form method=\"POST\" action=\"post.php\">\n
<input name=\"thrid\" type=\"hidden\" value=\"".$threadid."\">\n";
if($threadid=="new")
{
print "<center><table width=\"400\"><tr><th width=\"*\"
align=\"left\">Post:</th></tr>\n
<tr><td width=\"100%\" align=\"center\">Subject: <input
name=\"thread\" type=\"text\" size=\"60\"></td></tr>\n";
}
else
{
$threaddata=mysql_query("SELECT created, date, starter, username,
area, thread, body FROM forum WHERE tid='".$threadid."' ORDER BY
created LIMIT 1");
while($row=mysql_fetch_array($threaddata))
{
extract($row);
print "<a href=\"forum.php?area=$area\">$area</a> - <b>$thread</b>
(Started by ";
contact($starter);
print ")<p>\n";
}
$threaddata=mysql_query("SELECT created, date, username, body FROM
forum WHERE tid='".$threadid."' ORDER BY created");
while($row=mysql_fetch_array($threaddata))
{
extract($row);
print "<table width=\"100%\" columns=\"2\"><tr><th width=\"*\"
align=\"left\">By ";
contact($username);
print "</th><th width=\"225\" align=\"right\">Posted on ";
mysql_timestamp_to_human_basic($created);
print "</th></tr>\n
<tr><td align=\"left\">$body</td><td align=\"right\"
valign=\"bottom\">Last edited: ";
mysql_timestamp_to_human_basic($date);
print "</td></tr></table><p>\n<center><table width=\"400\"><tr><th
width=\"*\" align=\"left\">Reply:</th></tr>\n";
}
}

if(isset($_SESSION['username']))
{
print "<tr><td width=\"100%\" align=\"center\"><textarea
name=\"postbody\" cols=\"50\" rows=\"10\"></textarea></td></tr>\n
<tr><td align=\"center\"><input name=\"postsubmit\" type=\"submit\"
value=\"Post\"><input type=\"reset\"
value=\"Clear\"></td></tr></table>\n
</form>\n
</center>\n";
}
else
print "Login to reply</center>";

print_menu_right();
print_footer();
?>

>>>>>>>>>>POST.PHP>>>>>>>>>


<?php
session_start();
include("mngmnt.inc");
connect_to_db();
@$thrid=$_POST['thrid'];
@$postbody=$_POST['postbody'];
@$logpost=$_POST['postsubmit'];

if($logpost=="Post")
{
$ts=timestamp_to_mysql();
if($thrid=="new")
{
}
else
{
$threaddata=mysql_query("SELECT starter, aid, area, thread FROM forum
WHERE tid='".$thrid."' LIMIT 1");
while($row1=mysql_fetch_array($threaddata))
{
extract($row1);
$putpost=mysql_query("INSERT INTO forum(created, date, starter,
username, aid, area, tid, thread, body) values(".$ts.", ".$ts.",
'".$starter."', '".$_SESSION['username']."', ".$aid.", '".$area."',
".$thrid.", '".$thread."', '".$postbody."')") or die(mysql_error());
if(!$putpost)
print "ERROR PUTTING POST";
else
print "<html>\n<head>\n<meta http-equiv=\"Refresh\" content=\"10;
url=read.php?thread=$tid\">\n</head>\n<body>\nPost Complete. Now
returning to the thread, please wait...\n</body>\n</html>\n";
}
}
}
mysql_close();
?>

>>>>>>>>>>>>>>>>>>>


Any ideas?

TIA.

Alec.

Reply With Quote
  #2 (permalink)  
Old 12-14-2004
Pedro Graca
 
Posts: n/a
Default Re: php and POST form not acting normal...

Alec wrote:
> I have recently built a site using PHP and MySQL, and started to
> implement a basic forum into it. However, the form to post messages
> doesnt do what I want it to. If there is no user logged in (ie no
> session) then it posts the message fine. But if there is a user logged
> in, it loads my login.php page instead of my post.php page??? Code for
> both pages below:


<snip unindented code>

> Any ideas?


Yes.


1. Indent your code.

2. Remove *all* error-suppressing '@'s from it.

3. Add the following lines to the top of your scripts:
error_reporting(E_ALL);
ini_set('display_errors', '1');

4. *always* check the return value of mysql_query() calls
$sql = "select a, b, c from table where id=4";
$x = mysql_query($sql)
or die("Error in query [$sql]: " . mysql_error());


Apart from this, if something is behaving the opposite way you intended,
maybe reversing the if() will have the desired effect.

if(isset($_SESSION[úsername'])) /* your version */
if(!isset($_SESSION[úsername'])) /* reversed version */
--
Mail to my "From:" address is readable by all at http://www.dodgeit.com/
== ** ## !! ------------------------------------------------ !! ## ** ==
TEXT-ONLY mail to the whole "Reply-To:" address ("My Name" <my@address>)
may bypass my spam filter. If it does, I may reply from another address!
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 09:19 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0