Avatar billede YoJonas Nybegynder
05. september 2012 - 08:23 Der er 3 kommentarer og
1 løsning

Når en form skal sende til database, men ikke via URL-linjen (PHP)

Jeg har en form som sender til en database. Når jeg trykker på submit-knappen, så skriver den til databasen via url-linjen, hvor den indsætter alt den nye information. Problemet er bare ved meget information, da url-linjen kun kan have et x antal tegn.

Så spørgsmålet er: Om man kan omskrive min kode så den ikke skriver til databasen via url-linjen?


            <form name="create">

            <div class="createbody">

                    <label for="overskrift" id="overskrift">Overskrift:</label>
                    <input type="text" name="overskrift" class="nyheder" placeholder="Indtast overskriften på nyheden" />
               
                    <br />
               
                    <label for="tekst" id="tekst">Tekst:</label>
                    <textarea type="text" name="tekst" class="tekst" placeholder="Indtast indholdet af nyhed" /></textarea>
               
                    <br />
                   
                    <?php
                    $directory = "../images/nyheder";

                    function getDirectoryList ($directory)
                      {

                    $results = array();

                    $handler = opendir($directory);

                    while ($file = readdir($handler)) {

                    if ($file != "." && $file != "..") {
                      $results[] = $file;
                    }

                    }

                    closedir($handler);

                    return $results;

                    }
                    ?>

                    <label for="billede" id="billede">Billede:</label>
                   
                    <a id="displayText" href="java script:toggle();">Se billede galleri</a>
   
                    <input type="text" name="billede" id="pic2">
                   
                    <div id="toggleText" style="display: none">
                   
                   
                        <div id="billedegalleri_pil"></div>
                   
                   
                        <div id="billedegalleri">
                   
                   
                        <?php
                        $i=0;
                        foreach(getDirectoryList($directory) AS $billede2){
                        if($i%5==0) {
                        echo "<br>";
                        }

                        echo "<img src=\"../images/nyheder/".$billede2."\" width=\"74px\" height=\"30px\" id=\"".$billede2."\" onclick=\"document.getElementById('pic2').value=document.getElementById('".$billede2."').id;\">\n";
                        $i++;
                        }
                        ?>
                   
                   
                        </div>
                   
                   
                    </div>
                   
                    <br  />
               
                    <label for="dato" id="dato">Dato:</label>
                   
                    <input type="text" name="dato" class="nyheder" placeholder="Indtast dato" value="<?php echo date("Y-m-d"); ?>" />
               
                    <br />
                   
                    <label for="byline" id="byline">Byline:</label>
                    <input type="text" name="byline" class="nyheder" placeholder="Indtast forfatter" value="<?php echo $_SESSION["username"]; ?>" />
               
                    <br />
               
                    <label for="fotocredit" id="fotocredit">Fotokeditering:</label>
                    <input type="text" name="fotocredit" class="nyheder" placeholder="Indtast fotografens navn og/eller hvor billedet er kommet fra" />
               
                    <div class="submit_container">
                    <input type="submit" name="skriv" value="Tilføj nyhed" id="tilfojnyhed" class="submit" />
                    </div>
                   
                </div>

            </form>
         

        <?php
            if (isset($_GET['skriv'])) {
            $db_con = mysql_connect('localhost','BRUGERNAVN','ADGANGSKODE');
            if (!$db_con)
           
            {
            die('Could not connect: ' . mysql_error());
            }

            mysql_select_db("DATABASE", $db_con);

            mysql_query("INSERT INTO nyheder (overskrift, tekst, billede, dato, byline, fotocredit)
            VALUES ('".$_GET['overskrift']."', '".$_GET['tekst']."', '".$_GET['billede']."', '".$_GET['dato']."', '".$_GET['byline']."', '".$_GET['fotocredit']."')");

            mysql_close($db_con);
            }
        ?>
Avatar billede keysersoze Guru
05. september 2012 - 09:22 #1
<form name="create" method="post">

Og glem heller ikke SQL Injection; http://www.web-dev.dk/post/SQL-injections-mere-end-bare-et-pling.aspx
Avatar billede wickedd Juniormester
05. september 2012 - 09:49 #2
Jeg ville også fjerne $_GET og lave dem om til $_POST. Så behøver du ikke tænke på adresse linjen mere.
Avatar billede scootergrisen Nybegynder
05. september 2012 - 14:56 #3
Som de andre skriver brug $_POST i stedet for $_GET.
$_POST kan indeholde meget mere data.
Avatar billede YoJonas Nybegynder
05. september 2012 - 17:04 #4
Perfekt - tak for hurtig hjælp drenge!
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

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