Avatar billede jimmyrn Nybegynder
27. april 2006 - 12:49 Der er 5 kommentarer og
1 løsning

problemer med header-funktion i php

Jeg har et problem med et PHP-forum jeg er ved at udvikle, jeg er nået så langt at man kan svare på et indlæg, men når man trykker på "Add post" bliver jeg sendt hen til en helt forkert side, i stedet for tilbage hvor jeg kan se hvad jeg har skrevet. Dette sker fordi at den side jeg  skal komme til ikke får mit topic_id med og derfor bliver jeg directed tilbage til start. Håber i forstår hvad jeg mener, her er koden:

<?php
include("dbconnection.class.php");
//connect to server and select database
$conn = dbconnect();

//check to see if we're showing the form or adding the post
if ($_POST[op] != "addpost") {
  // showing the form; check for required item in query string
  if (!$_GET[post_id]) {
        header("Location: diller/topiclist.php");
        exit;
  }

  //still have to verify topic and post
  $verify = "select ft.topic_id, ft.topic_title from forum_posts as fp left join forum_topics as ft on fp.topic_id = ft.topic_id where fp.post_id = $_GET[post_id]";
  $verify_res = mysql_query($verify) or die(mysql_error());
  if (mysql_num_rows($verify_res) < 1) {
      //this post or topic does not exist
      header("Location: diller/topiclist.php");
      exit;
  } else {
      //get the topic id and title
      $topic_id = mysql_result($verify_res,0/*,'topic_id'*/);
      $topic_title = stripslashes(mysql_result($verify_res, 0,'topic_title'));

      print ("
      <html>
      <head>
      <title>Post Your Reply in $topic_title</title>
      </head>
      <body>
      <h1>Post Your Reply in $topic_title</h1>
      <form method=post action=\"$_SERVER[PHP_SELF]\">
      <p><strong>Your E-Mail Address:</strong><br>
      <input type=\"text\" name=\"post_owner\" size=40 maxlength=150>

      <P><strong>Post Text:</strong><br>
      <textarea name=\"post_text\" rows=8 cols=40 wrap=virtual></textarea>

      <input type=\"hidden\" name=\"op\" value=\"addpost\">
      <input type=\"hidden\" name=\"topic_id\" value=\"$topic_id\">

      <P><input type=\"submit\" name=\"submit\" value=\"Add Post\"></p>

      </form>
      </body>
      </html>");
  }
} else if ($_POST[op] == "addpost") {
  //check for required items from form
  if ((!$_POST[topic_id]) || (!$_POST[post_text]) || (!$_POST[post_owner])) {
      header("Location: diller/topiclist.php");
      exit;
  }

  //add the post
  $add_post = "insert into forum_posts values (default, '$_POST[topic_id]', '$_POST[post_text]', now(), '$_POST[post_owner]')";
  mysql_query($add_post) or die(mysql_error());

  //redirect user to topic
  DET ER HER JEG HAR PROBLEMER, i browseradressen, viser den bare "showtopic.php?topic_id="
  header("Location: showtopic.php?topic_id=$topic_id");
  exit;
}
?>


Nogen der kan hjælpe?
Avatar billede jimmyrn Nybegynder
27. april 2006 - 12:51 #1
Jeg skal lige tilføje at jeg har testet det hele på alle mulige måder så jeg er 99,9% sikker på at det er den nederste header-funktion der ikke får den $topic_id. SQL statements osv er testet i SQL browseren og virker upåklageligt
Avatar billede mcardle Nybegynder
13. maj 2006 - 05:27 #2
Det er fordi du ikke kan sende en variabel igennem browseren. Du skal afkode den først. Det gør du ved at skrive:

header("Location: showtopic.php?topic_id=" . urlencode($topic_id) . ");

//mcardle
Avatar billede jimmyrn Nybegynder
11. december 2006 - 21:29 #3
svar
Avatar billede jimmyrn Nybegynder
11. december 2006 - 21:30 #4
lukket
Avatar billede mcardle Nybegynder
11. december 2006 - 21:32 #5
Hmm, jeg har ikke fået din mail før nu... Sorry
Avatar billede jimmyrn Nybegynder
11. december 2006 - 21:37 #6
Det skal du ikke undskylde, det er mig der ikke har takket for svaret ;-) jeg skulle bare finde ud af hvordan man lukkede emnet, der er ingen grund til at det står åbent mere. Men tak for hjælpen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester