Avatar billede tobrukDk Novice
06. juni 2012 - 23:55 Der er 16 kommentarer og
1 løsning

spam ikke database medd F5

hej

lige nu er jeg totalt løse omkring hvordan jeg skal bygge op sådan at man ikke kan klik/tryg på F5 og bare ligger sig ind i databasen altså det vil sige at spam den eller ligne

så man skal klik på sumbit kneppe før man ligesom kan ligge det ind i databasen



<?php
                if ($stmt = $mysqli->prepare('INSERT INTO `forum_traede` (`kategori_id`, `bruger_id`, `tekst`, `dato`, `titel`) VALUES (?, ?, ?, NOW(), ?)')) {
                    $stmt->bind_param('ssss', $katgori_id, $bruger_id, $tekst, $titel);
                    $katgori_id = $_POST["kategori"];
                    $bruger_id = $_SESSION["user_id"];
                    $tekst = $_POST["tekst_indhold"];
                    $titel = $_POST["title"];
                   
                    $stmt->execute();
                    $stmt->close();
                } else {
                    echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
                }
            ?>




<input type="submit" value="Opret indhold" name="godkendt">


jeg har prøve at gøre sådan her ude over


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


men det virker overhovedet heller ikke på nogle måde... hmm

har prøve sådan her

<?php
            if( isset( $_GET['godkendt'])
            {
                if($stmt = $mysqli->prepare('INSERT INTO `forum_traede` (`kategori_id`, `bruger_id`, `tekst`, `dato`, `titel`) VALUES (?, ?, ?, NOW(), ?)'))
                {
                    $stmt->bind_param('iiss', $katgori_id, $bruger_id, $tekst, $titel);
                    $katgori_id = $_POST["kategori"];
                    $bruger_id = $_SESSION["user_id"];
                    $tekst = $_POST["tekst_indhold"];
                    $titel = $_POST["title"];
                   
                    $stmt->execute();
                    $stmt->close();
                    echo "Godkendt";
                }       
            } else {
                    echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
                }
            ?>


kommer frem med fejl her

Parse error: syntax error, unexpected '{' in /home/jesperbo/public_html/xxxxxxxxx.dk/xxxxxx.php on line 38

det vil sige den første line der hvor den siger


if( isset( $_GET['godkendt'])
            {

der er fejl siger den.. hmm

håber du kan hjælpe mig
Avatar billede olebole Juniormester
07. juni 2012 - 00:06 #1
<ole>

Send brugeren tilbage med en Location header. Send adressen med til siden med formen:

<input type="hidden" value="<?php echo $_SERVER['PHP_SELF'] ?>" name="return_page">
<input type="submit" value="Opret indhold" name="godkendt">

- og send så brugeren tilbage med en header:

<?php
    if ($stmt = $mysqli->prepare('INSERT INTO `forum_traede` (`kategori_id`, `bruger_id`, `tekst`, `dato`, `titel`) VALUES (?, ?, ?, NOW(), ?)')) {
        $stmt->bind_param('ssss', $katgori_id, $bruger_id, $tekst, $titel);
        $katgori_id = $_POST["kategori"];
        $bruger_id = $_SESSION["user_id"];
        $tekst = $_POST["tekst_indhold"];
        $titel = $_POST["title"];
       
        $stmt->execute();
        $stmt->close();
       
        if (isset($_POST['return_page'])) {
            $return_page = $_POST['return_page']
        } else {
            $return_page = 'index.php';
        }
        header('Location: '.$return_page);
    } else {
        echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
    }
?>

Så sker der ikke noget, når brugeren reloader  *o)

/mvh
</bole>
Avatar billede olebole Juniormester
07. juni 2012 - 00:08 #2
- og næste gang, du får lyst til at skrive:

    "man skal klik på sumbit kneppe"

- så tænk lige på, du skriver til skrøbelige, ældre herrer  *D
Avatar billede olebole Juniormester
07. juni 2012 - 00:10 #3
- og jeg vil slet ikke tænke på, hvor din stavekontrol kender dét ord fra!
Avatar billede tobrukDk Novice
07. juni 2012 - 00:15 #4
Syg humor Olebole... hahaha griner og smiler da :)
Avatar billede tobrukDk Novice
07. juni 2012 - 00:17 #5
den siger at der ligge en fejl her



if (isset($_POST['return_page'])) {
                    $return_page = $_POST['return_page']
                } else {
                    $return_page = 'index.php';
                }


det vil sige ved "else"


Parse error: syntax error, unexpected '}' in /home/jesperbo/public_html/xxxxxx.dk/xxxxxxx.php on line 49
Avatar billede kjeldsted Novice
07. juni 2012 - 00:25 #6
"så man skal klik på sumbit kneppe før man ligesom kan ligge det ind i databasen", du stiller da store krav til dine brugere, siden man skal udføre den form for fysisk aktivitet inden det bliver gemt.
Nå, spøg til side.

#5 det betyder at der mangler et ; på linjen før else.
Avatar billede chriz7913 Nybegynder
07. juni 2012 - 00:29 #7
Du kan også gøre det på denne måde, at når du tjekker om der er postet/submittet (om der er kneppet) og der er det, så ligger du data ind i databasen. Efter det bruger du header("Location:dinside.php?saved"); fx.

På samme side tjekker du så
if(isset($_GET['saved'])){
echo "Dine data er gemt";
}

Hvis brugeren nu opdatere, vil han bare blive mødt at beskeden "Dine data er gemt", uden at PHP vil opdatere databasen mere end én gang selvom brugeren bliver ved med at trykke F5

Vel samme grundprincip som OleBole :-)
Avatar billede tobrukDk Novice
07. juni 2012 - 00:45 #8
#6 ja det gøre jeg vel sikkert men jeg vil bare sikker mig at min database ikke bliver spam totalt!!

tak for hjælp

NY FEJL KOMMER FREM


if (isset($_POST['return_page'])) {
                    $return_page = $_POST["return_page"];
                } else {
                    $return_page = 'http://xxxx.dk/bruger-forum/';
                }
                header('Location: '.$return_page);


Warning: Cannot modify header information - headers already sent by (output started at /home/jesperbo/public_html/xxxxx.dk/xxx.php:27) in /home/jesperbo/public_html/xxxxx.dk/xxxx.php on line 52


<form action="#" method="post">
            <?php
            if ($stmt = $mysqli->prepare('INSERT INTO `forum_traede` (`kategori_id`, `bruger_id`, `tekst`, `dato`, `titel`) VALUES (?, ?, ?, NOW(), ?)')) {
                $stmt->bind_param('ssss', $katgori_id, $bruger_id, $tekst, $titel);
                $katgori_id = $_POST["kategori"];
                $bruger_id = $_SESSION["user_id"];
                $tekst = $_POST["tekst_indhold"];
                $titel = $_POST["title"];
               
                $stmt->execute();
                $stmt->close();
               
                if (isset($_POST['return_page'])) {
                    $return_page = $_POST["return_page"];
                } else {
                    $return_page = 'http://xxxxx.dk/bruger-forum/';
                }
                header('Location: '.$return_page);
            } else {
                echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
            }
        ?>
                    <table border="0">
                        <tr>
                            <td id="tb-w_a"><p>Kategori</p></td>
                            <td>:</td>
                            <td>
                            <select name="kategori">
                            <?php
                            $query = "SELECT id, title FROM forum_kategorier";
                            $result = $mysqli->query($query);
                            while(list($id, $title) = $result->fetch_row())
                            {
                                echo "<option value=\"$id\">$title</option>"; 
                            }
                            ?>
                            </select>
                            </td>
                        </tr>
                        <tr>
                            <td id="tb-w_a"><p>Title</p></td>
                            <td>:</td>
                            <td><input type="text" name="title"></td>
                        </tr>
                    </table>
                <textarea name="tekst_indhold" style="width:716px; height:170px;"></textarea><br />
                <input type="hidden" value="<?php echo $_SERVER['PHP_SELF'] ?>" name="return_page">
                <input type="submit" value="Opret indhold" name="godkendt">
            </form>


sådan her ser det ud lige nu :) men fejl lige i header
Avatar billede tobrukDk Novice
07. juni 2012 - 00:46 #9
#7 jeg prøve lige at kig på det :) jeg er gerne åben for alle muligheder :) så jeg kan for klare det her problemer så hurtigt som muligt.. hmm ..
Avatar billede danco Nybegynder
07. juni 2012 - 00:58 #10
Du får fejl med din header fordi du outputter til browseren før du videresender. Med andre ord skal din PHP så som det allerførste i dokumentet.
Det kan også ske pga. en echo eller lign.
Avatar billede arne_v Ekspert
07. juni 2012 - 01:46 #11
Note: hvis man vil forhindre dobbelt submit inden redirect er processet paa client, saa kan man bruger synchronizer token pattern.
Avatar billede tobrukDk Novice
07. juni 2012 - 07:43 #12
#10 så jeg skal lige den nede under form eller over det ?? Ellers kan jeg vel lige sa godt bare echo noget tekst ud men så skal det bare være før form .

#11 hvad mener du helt jeg forstår den ikke lige helt .. hmm prøve at forklare det igen.
Avatar billede tobrukDk Novice
07. juni 2012 - 18:50 #13
Olebole... du er nok "skide" god til mysqli,

jeg har lige det over en anden file som du har skrevet til mig. og den kommer frem med den her fejl


Fatal error: Call to a member function prepare() on a non-object in /home/jesperbo/public_html/xxxx.dk/xxxxx.php on line 2

det vil sige at fejl lige her


if ($stmt = $mysqli->prepare('INSERT INTO `forum_traede` (`kategori_id`, `bruger_id`, `tekst`, `dato`, `titel`) VALUES (?, ?, ?, NOW(), ?)')) {
Avatar billede tobrukDk Novice
07. juni 2012 - 23:06 #14
Jeg har lige den tilbage i 1 fil så den ikke bliver sendt over i en anden file eller ligne..
Avatar billede tobrukDk Novice
08. juni 2012 - 00:31 #15
jeg har lavet det på den her måde


<?php
            if(isset($_POST["godkendt"]))
            {
                if($stmt = $mysqli->prepare('INSERT INTO `forum_traede` (`kategori_id`, `bruger_id`, `tekst`, `dato`, `titel`) VALUES (?, ?, ?, NOW(), ?)'))
                {
                    $stmt->bind_param('ssss', $katgori_id, $bruger_id, $tekst, $titel);
                    $katgori_id = $_POST["kategori"];
                    $bruger_id = $_SESSION["user_id"];
                    $tekst = $_POST["tekst_indhold"];
                    $titel = $_POST["title"];
                   
                    $stmt->execute();
                    $stmt->close();
                    if (isset($_POST['return_page'])) {
                        header('Location: http://xxx.dk/bruger-forum-opret/');
                    }
                   
                }
                else
                {
                    echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
                }   
            }
            ?>


Warning: Cannot modify header information - headers already sent by (output started at /home/jesperbo/public_html/xxxx.dk/xxxx.php:27) in /home/jesperbo/public_html/xxxx.dk/xxxx.php on line 48

Dansk
Advarsel: Kan ikke ændre header information - headers allerede sendt fra (output startede på / home / jesperbo / public_html / xxxx.dk / xxxx: 27) in / home / jesperbo / public_html / xxxx.dk / xxxx on line 50

det her jeg på linje 27


<?php
include("include/database/db.php");
if($stmt = $mysqli->prepare('SELECT `rank` FROM `brugere` WHERE `email` = ?')){
  $stmt->bind_param("s", $email);
  $email = $_SESSION["email"];
  $stmt->execute();
  $stmt->bind_result($rank);
  $stmt->fetch();
 
  switch($rank){
    case 1:
      echo "Admin menu";
      break;
    case 2:
    ?>
    <ul id="brugerboxtop">
        <li class="loginfunction"><a href="http://xxx.dk/logud/" id="signup">Log ud</a></li>
    </ul>
    <?php
      break;
    default:
    // log ind del
    ?>
    <ul id="brugerboxtop">
        <li class="loginfunction"><a href="http://xxx.dk/logind/" id="signup">Log ind</a></li>
    </ul>
    <?php
  }
  $stmt->close();
} else {
  /* Der er opstået en fejl */
  echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
}
?>
Avatar billede tobrukDk Novice
08. juni 2012 - 18:47 #16
Jeg har valgt at drop det... det næsten ligemeget hvad jeg gøre så kommer den frem med en fejl og jeg har også prøve at lukke noget af kode af og ligne med /* */ men det hjælper overhovedet ikke...
Avatar billede tobrukDk Novice
13. juni 2012 - 22:53 #17
lukker den her da jeg har drop det og det kan godt være at jeg kommer tilbage senere. :)
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