forum kategori problem

Alt vedrørende PHP og MySQL. Fra scripts til CMS, boards, wikis, blogs etc

forum kategori problem

Indlægaf SimonJ » søn 18. jul 2010 18:31

Hej, jeg har lavet et forum, forummet har en masse kategorier og inde i dem er der så tråde, men når man skal oprette en tråd så går man først ind i den kategori man vil og derefter trykker på opret tråd.

mit problem er så at man bare kan rette kategoriID'et oppe i URL'en til et tal man selv bestemmer, og så kan man jo oprette en tråd i en kategori som endnu ikke findes :S.

hvordan kan jeg sikre mig at det er det kategori ID man har trykket på man os opretter en tråd i :)?
SimonJ
 
Indlæg: 95
Tilmeldt: tors 4. jun 2009 16:07

Re: forum kategori problem

Indlægaf Brianmanden » man 19. jul 2010 16:01

Hmmm hvad med et lille server side script der kigger lidt på URL´en hvad det er brugeren er i gang med ?

Hvis kategorien findes så send brugeren en side hvor der kan oprettes en tråd. Hvis kategorien ikke findes sender serveren en side til brugeren hvor der står en fejl meddelelse.
Sharing is caring !
Brugeravatar
Brianmanden
Administrator
 
Indlæg: 767
Tilmeldt: ons 3. sep 2008 09:05
Geografisk sted: Vejle, Danmark

Re: forum kategori problem

Indlægaf SimonJ » man 19. jul 2010 23:22

noget javascript :)?.

eller skal jeg når personen trykker submit os tjekke om kategorien findes :)?
SimonJ
 
Indlæg: 95
Tilmeldt: tors 4. jun 2009 16:07

Re: forum kategori problem

Indlægaf SimonJ » man 19. jul 2010 23:58

nu har prøvet det her, og jeg kan simpelhen ikke få det til at virke og er ved at blive ret sur :P, gider du se på det om du kan få det til at virke eller se hvad det er jeg gør forkert, har os prøvet der hvor jeg tjekker om kategori'en findes $t_id > 0 der har jeg prøvet med != og == og <, men ingen af dem virker :S. eller jo men så lige meget hvad for en kategori man er på så bliver den til false :S
Kode: Vælg alt
$kategoriID = $_GET['kategoriID'];

if(!isset($overskrift) || !isset($indhold) || !isset($fejl))
{
   $overskrift = "";
   $indhold    = "";
   $fejl       = false;
   
   
}#Lukker if isset overskrift,indhold


   if(isset($kategoriID))
   {
      
         #tjek om kategori findes
      $mysql = connect();
        $stmt = $mysql->prepare("SELECT count(*) As t_id FROM forum_traad WHERE fk_forum_kategori = '$kategoriID'") or die($mysql->error);
        $stmt->bind_result($t_id);
        $stmt->execute() or die($mysql->error);
      $stmt->fetch();
      
      if($t_id > 0)
      {
         $fejl == true;
         echo "HEJM ED DIIGIGIDG";
         exit();
      }
   }#Lukker isset







if(isset($_POST['send'])) {

   $kategoriID = $_GET['kategoriID'];
   $overskrift = htmlspecialchars($_POST['overskrift']);
   $indhold    = htmlspecialchars($_POST['indhold']);
   $godkendt   = "ja";
   
   if($fejl == true)
   {
      $error = "Denne kategori findes ikke";   
   } elseif(empty($overskrift) || empty($indhold)) {
      $error = "Alle felter skal udfyldes";
   } else {
      $mysql = connect();
      $stmt = $mysql->prepare("INSERT INTO forum_traad (overskrift, indhold, fk_forum_kategori, brugernavn, dato, godkendt) VALUES (?,?,?,?,?,?)") or die($mysql->error);
      $stmt->bind_param('ssisis', $overskrift, $indhold, $kategoriID, $_SESSION['username'], $dato, $godkendt) or die($mysql->error);
      $stmt->execute();
      $stmt->close();
      
      $traadID = mysqli_insert_id($mysql);
      
      header("location: forum.traad.php?traadID=$traadID&kategoriID=$kategoriID");
   }#Lukker else
   
   


}#Lukker isset send
SimonJ
 
Indlæg: 95
Tilmeldt: tors 4. jun 2009 16:07

Re: forum kategori problem

Indlægaf Brianmanden » tirs 20. jul 2010 09:37

SimonJ skrev:noget javascript :)?.

eller skal jeg når personen trykker submit os tjekke om kategorien findes :)?


Jeg tror ikke JavaScript er en optimal løsning da den jo ville kunne omgåes.

Det ville nok være smartere at lave et tjek på om kategorien findes før der skrives i databasen. Hvis kategorien findes så oprettes tråden - hvis den ikke findes så returneres der en fejlside.
Sharing is caring !
Brugeravatar
Brianmanden
Administrator
 
Indlæg: 767
Tilmeldt: ons 3. sep 2008 09:05
Geografisk sted: Vejle, Danmark

Re: forum kategori problem

Indlægaf SimonJ » tirs 20. jul 2010 13:42

det bare mærkeligt, fordi som jeg har gjort det nu som du kan se i koden, så hvis man går ind på den den kategori ID som findes så får jeg fejl, men hvis det er en kategori som ikke findes så kan jeg godt komme ind på siden :S

og jeg har prøvet næsten alt

<= >= != osv.

lige nu er den sådan her

if($t_id <= 0)

og der kan jeg godt gå ind på id 1, og hvis jeg skriver nogen andre id'er får jeg fejl fordi der er kun 1 kategori oprettet, men hvis jeg skriver id 12 eller 13 så kan jeg os oprette :S men ingen andre virker, det lidt mærkeligt
SimonJ
 
Indlæg: 95
Tilmeldt: tors 4. jun 2009 16:07

Re: forum kategori problem

Indlægaf jarlskov » søn 25. jul 2010 14:01

Jeg vil anbefale dig at lave et check på om kategorien findes inden du opretter tråden. Hvis du begynder at lave check på om kategori-id er mindre en et eller andet max vil du også rende ind i problemer hvis du på et senere tidspunkt vælger at slette en kategori. Desuden vil du samtidig kunne lave dit sikkerhedscheck, for at sikre at folk ikke kan oprette tråde i kategorier de ikke bør have adgang til.

Mht. at folk kan spoofe kategori-id'et, ville jeg nok vælge at inkludere det som et hidden input når du laver din form. Så skal der i det mindste HTTP-forgery til før folk kan forsøge at oprette tråde i forkerte kategorier, hvilket sandsynligvis vil holde de fleste væk.

Mht. din kode:
Kode: Vælg alt
if($t_id <= 0)

Nu kender jeg ikke dine variabel-navne, men $t_id lyder som om du checker id på tråden, og ikke på kategorien, som det ellers lyder som om du gerne vil.
Følg min Blog om Ubuntu/Linux, Open Source og nørderi generelt.
Brugeravatar
jarlskov
 
Indlæg: 196
Tilmeldt: søn 26. apr 2009 21:02
Geografisk sted: København


Tilbage til PHP og MySQL

Hvem er online

Brugere der læser dette forum: Ingen tilmeldte og 1 gæst