webForumDet fria alternativet

Problem med "header"

16 svar · 798 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 271 inlägg
#1

Har problem med "headern" i följande script.

<?php                                                       ////////  PM  //
	$receiver = $_GET["receiver"];
	if (!isset($receiver))
	  die;

	$replyto = $_GET["replyto"];
	if ($replyto && !isset($replyto))
	  die;

	$res = mysql_query("SELECT * FROM members WHERE id=$receiver") or die(mysql_error());
	$user = mysql_fetch_assoc($res);
	if (!$user)
	  die("Finns ingen medlem med detta id.");

	if ($replyto)
	{
	  $res = mysql_query("SELECT * FROM meddelanden WHERE id=$replyto") or die(mysql_error());
	  $msga = mysql_fetch_assoc($res);
	  if ($msga["receiver"] != $_SESSION["sess_id"])
	    die;
	  $res = mysql_query("SELECT user FROM members WHERE id=" . $msga["sender"]) or die(mysql_error());
	  $usra = mysql_fetch_assoc($res);
	  $body .= "\n\n\n-------- $usra[user] skrev: --------\n$msga[msg]\n";
	}
	?>
	<table width=300 border=0 cellspacing=0 cellpadding=0><tr><td>
	<div align=center>
	<strong>Meddelande till <a href=userdetails.php?id=<?=$receiver?>><?=$user["user"]?></a></strong>
	<form method=post action=?page=spara_pm>
	<?php if ($_GET["returnto"] || $_SERVER["HTTP_REFERER"]) { ?>
	<input type=hidden name=returnto value=<?=$_GET["returnto"] ? $_GET["returnto"] : $_SERVER["HTTP_REFERER"]?>>
	<?php } ?>
	<table border=1 cellspacing=0 cellpadding=5>
	<tr><td<?=$replyto?" colspan=2":""?>><textarea name=msg cols=50 rows=15><?=htmlspecialchars($body)?></textarea></td></tr>
	<tr>
	<?php if ($replyto) { ?>
	<td align=center><input type=checkbox name='delete' value='ja' <?=$user['raderapm'] == 'ja'?"checked":""?>>Radera efter svar
	<input type=hidden name=origmsg value=<?=$replyto?>></td>
	<?php } ?>
	<td align=center><input type=checkbox name='save' value='ja' <?=$user['sparapm'] == 'ja'?"checked":""?>>Spara kopia i utkorgen</td></tr>
	<tr><td<?=$replyto?" colspan=2":""?> align=center><input type=submit value="Skicka!"></td></tr>
	</table>
	<input type=hidden name=receiver value=<?=$receiver?>>
	</form>

 	</div></td></tr></table>
<?php
               																							//////  PM  ///
  	$receiver = $_POST["receiver"];
	$origmsg = $_POST["origmsg"];
	$save = $_POST["save"];
 	$returnto = $_POST["returnto"];

	  if (!isset($receiver) || ($origmsg && !isset($origmsg)))
	  	echo "Ogiltigt id.";

	  $msg = trim($_POST["msg"]);
	  if (!$msg)
	    echo "Du måste skriva något!";

	  $location = ($save == 'ja') ? "both" : "in";

	  $res = mysql_query("SELECT UNIX_TIMESTAMP(senastinloggad) as la FROM members WHERE id=$receiver") or die(mysql_error());
	  $user = mysql_fetch_assoc($res);
	  if (!$user)
	    echo "Finns ingen medlem med detta ID.";

	  
	  mysql_query("INSERT INTO meddelanden (poster, sender, receiver, added, msg, location) VALUES('" . $_SESSION["sess_id"] . "', '" .
	  $_SESSION["sess_id"] . "', '$receiver', NOW(), '" .
	  db_escape($msg) . "', '" . db_escape($location) . "')") or die(mysql_error());

	  $delete = $_POST["delete"];

	  if ($origmsg)
	  {
      if ($delete == "ja")
      {
	      // Make sure receiver of $origmsg is current user
	      $res = mysql_query("SELECT * FROM meddelanden WHERE id=$origmsg") or die(mysql_error());
	      if (mysql_num_rows($res) == 1)
	      {
	        $arr = mysql_fetch_assoc($res);
	        if ($arr["receiver"] != $_SESSION["sess_id"])
	          echo "Ojdå, detta skulle inte hända.";
	        if ($arr["location"] == "in")
	        	mysql_query("DELETE FROM meddelanden WHERE id=$origmsg AND location = 'in'") or die(mysql_error());
	        elseif ($arr["location"] == "both")
	        	mysql_query("UPDATE meddelanden SET location = 'out' WHERE id=$origmsg AND location = 'both'") or die(mysql_error());
	      }
      }
   	  if (!$returnto)
   	  	$returnto = "?page=inkorg";
	  }

    if ($returnto)
    {
      header("Location: $returnto");
      die;
    }

	  stdmsg("Succeeded", (($n_pms > 1) ? "$n messages out of $n_pms were" : "Message was").
	    " successfully sent!" . ($l ? " $l profile comment" . (($l>1) ? "s were" : " was") . " updated!" : ""));

	exit;
?>

Någon som kan hjälpa mig med detta? :r

metalboyMedlem sedan jan. 2005953 inlägg
#2

Vad är problemet då?

GuldstrandMedlem sedan juli 20041 271 inlägg
#3

headern fungerar inte, sidan bara "stoppas" i det sista kodstycket ovan.

metalboyMedlem sedan jan. 2005953 inlägg
#4

Har du aktiverat visning av felmeddelanden? På vilken rad "stoppas" scriptet? Vad använder du för webbläsare? Enligt reglerna ska en redirect-header anges med fullständig URL (dvs t.ex. http://www.dinsida.com/sökväg/till/scriptet.php?page=inkorg), och även om de flesta webbläsare accepterar en sådan redirect-header som du skickar (?page=inkorg) så är det ingen garanti för att alla gör det.

GuldstrandMedlem sedan juli 20041 271 inlägg
#5

metalboy skrev:

Har du aktiverat visning av felmeddelanden? På vilken rad "stoppas" scriptet? Vad använder du för webbläsare? Enligt reglerna ska en redirect-header anges med fullständig URL (dvs t.ex. http://www.dinsida.com/sökväg/till/scriptet.php?page=inkorg), och även om de flesta webbläsare accepterar en sådan redirect-header som du skickar (?page=inkorg) så är det ingen garanti för att alla gör det.

Ja, felmeddelanden är "aktiverat".
Vet ej var scriptet stoppar. :r

Använder IE7 som webbläsare.

Testade även att ange hela länken i headern, men det hjälpte inte. :(

metalboyMedlem sedan jan. 2005953 inlägg
#6

Lägg in lite echo-satser då för att se var scriptet stoppar.

Hur hänger de två kodstyckena ihop? Ligger de i samma fil, eller i två olika filer? Om de ligger i samma fil, vilket kommer först? Är det där all kod du visar?

GuldstrandMedlem sedan juli 20041 271 inlägg
#7

metalboy skrev:

Lägg in lite echo-satser då för att se var scriptet stoppar.

Hur hänger de två kodstyckena ihop? Ligger de i samma fil, eller i två olika filer? Om de ligger i samma fil, vilket kommer först? Är det där all kod du visar?

Hur menar du med echo-satser? :x :r
Nej, det är två olika sidor.

metalboyMedlem sedan jan. 2005953 inlägg
#8
echo "Detta är en echo-sats";

Lägg in lite vanlig, hederlig felsökning helt enkelt.

T.ex.

echo 'Innan if-sats 1';
if ($a == 1) {
   echo 'Inne i if-sats 1';
   // Gör någonting här...
}
echo 'Efter if-sats 1';

Då ser du ju var scriptet stannar någonstans...

GuldstrandMedlem sedan juli 20041 271 inlägg
#9

Sorry, men jag förstår fortfarande inte.

fiddlerMedlem sedan juli 20023 617 inlägg
#10

Kommer skriptet någonsin förbi detta?

if ($replyto && !isset($replyto)) 
      die;
GuldstrandMedlem sedan juli 20041 271 inlägg
#11

fiddler skrev:

Kommer skriptet någonsin förbi detta?

if ($replyto && !isset($replyto)) 
      die;

Bra fråga, hur kollar jag det? :p :r

@ndersMedlem sedan juni 200032 969 inlägg
#12

Guldstrand skrev:

Bra fråga, hur kollar jag det? :p :r

http://www.webforum.nu/showthread.php?p=1368702#post1368702

fiddlerMedlem sedan juli 20023 617 inlägg
#13

Lägg till lämpligt meddelande efter dina "die" ex:

die("Dog vid receiver");
GuldstrandMedlem sedan juli 20041 271 inlägg
#14

fiddler skrev:

Lägg till lämpligt meddelande efter dina "die" ex:

die("Dog vid receiver");

Hjälpte tyvärr inte så mycket. Är det sista kodstycket ovan som stoppar upp det hela. headern verkar gå till en sida som inte finns (fast att den finns)? :q

fiddlerMedlem sedan juli 20023 617 inlägg
#15

Vad får du för innehåll i $returnto isåfall?

GuldstrandMedlem sedan juli 20041 271 inlägg
#16

fiddler skrev:

Vad får du för innehåll i $returnto isåfall?

Hur menar du då? :q

fiddlerMedlem sedan juli 20023 617 inlägg
#17

Guldstrand skrev:

Hur menar du då? :q

$returnto innehåller den adress du skall tillbaka till.

Var försöker skriptet skicka dig?

130 ms totalt · 3 externa anrop · v20260731065814-full.b943c234
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)