toevoeg script voegt niets toe

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arjan van Rossen

Arjan van Rossen

19/09/2013 08:29:22
Quote Anchor link
Ik heb onderstaand script en opzich als ik handmatig iets in de database toevoeg is het wel zichtbaar maar toevoegen met het script geeft geen melding maar voegt ook niets toe in de database.. wat mis ik hier want ik staar me rot maar zie niets bijzonders..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Toevoegen</title>
</head>

<body>
<form method="post">
<table>

    <tr>
        <td>Ambtenaarnummer:</td>
        <td><input type="text" name="ambtenaarnummer" /></td>
    </tr>
    <tr>
        <td>Achternaam:</td>
        <td><input type="text" name="achternaam" /></td>
    </tr>
    <tr>
        <td>Tussenvoegsel</td>
        <td><input type="text" name="tussenvoegsel" /></td>
    </tr>
    <tr>
        <td>voorletters</td>
        <td><input type="text" name="voorletters" /></td>
    </tr>
    <tr>
        <td>Voornamen:</td>
        <td><input type="text" name="voornamen" /></td>
    </tr>
    <tr>
        <td>Groep:</td>
        <td><input type="text" name="groep" /></td>
    </tr>
    <tr>
        <td>Straat:</td>
        <td><input type="text" name="straat" /></td>
    </tr>
    <tr>
        <td>Postcode:</td>
        <td><input type="text" name="postcode" /></td>
    </tr>
    <tr>
        <td>Plaats:</td>
        <td><input type="text" name="plaats" /></td>
    </tr>
    <tr>
        <td>Telefoon:</td>
        <td><input type="text" name="telefoon" /></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><input type="submit" name="submit" value="add" /></td>
    </tr>
</table>
<?php
if (isset($_POST['submit']))
    {
      
    include 'db.php';
    
                     $title=$_POST['ambtenaarnummer'] ;
                    $author= $_POST['achternaam'] ;                    
                    $name=$_POST['tussenvoegsel'] ;
                    $copy=$_POST['voorletters'] ;
                    $title=$_POST['voornamen'] ;
                    $author= $_POST['groep'] ;                    
                    $name=$_POST['staat'] ;
                    $copy=$_POST['postcode'] ;
                    $name=$_POST['plaats'] ;
                    $copy=$_POST['telefoon'] ;
                                            
                                                
         mysql_query("INSERT INTO `controleurs`(ambtenaarnummer,achternaam,tussenvoegsel,voorletters,voornamen,groep,straat,postcode,plaats,telefoon)
         VALUES ('$ambtenaarnummer','$achternaam','$tussenvoegsel',$voorletters','$voornamen','$groep',$straat','$postcode','$plaats','$telefoon')"
);
                
                
            }

?>

</form>
<table border="1">
    
            <?php
            include("db.php");
            
                
            $result=mysql_query("SELECT * FROM controleurs");
            
            while($test = mysql_fetch_array($result))
            {

                $id = $test['ID'];    
                echo "<tr align='center'>";    
                echo"<td><font color='black'>" .$test['ambtenaarnummer']."</font></td>";
                echo"<td><font color='black'>" .$test['achternaam']."</font></td>";
                echo"<td><font color='black'>". $test['tussenvoegsel']. "</font></td>";
                echo"<td><font color='black'>". $test['voorletters']. "</font></td>";
                echo"<td><font color='black'>". $test['voornamen']. "</font></td>";
                echo"<td><font color='black'>" .$test['groep']."</font></td>";
                echo"<td><font color='black'>" .$test['straat']."</font></td>";
                echo"<td><font color='black'>". $test['postcode']. "</font></td>";
                echo"<td><font color='black'>". $test['plaats']. "</font></td>";
                echo"<td><font color='black'>". $test['telefoon']. "</font></td>";    
                echo"<td> <a href ='view.php?BookID=$id'>Edit</a>";
                echo"<td> <a href ='del.php?BookID=$id'><center>Delete</center></a>";
                                    
                echo "</tr>";
            }

            mysql_close($conn);
            ?>

</table>

</body>
</html>
Gewijzigd op 19/09/2013 08:30:14 door Arjan van Rossen
 
PHP hulp

PHP hulp

03/05/2024 16:07:57
 
Eddy E

Eddy E

19/09/2013 09:11:06
Quote Anchor link
Zet bovenaan (nog voor je <!DOCTYPE html>) eens dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
error_reporting(E_ALL);
?>


Bij je query: kijk eens wat die teruggeeft.
Dus zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php


$res
= mysql_query("INSERT INTO `controleurs`(ambtenaarnummer,achternaam,tussenvoegsel,voorletters,voornamen,groep,straat,postcode,plaats,telefoon)
         VALUES ('$ambtenaarnummer','$achternaam','$tussenvoegsel',$voorletters','$voornamen','$groep',$straat','$postcode','$plaats','$telefoon')"
);

var_dump($res);

?>
Gewijzigd op 19/09/2013 15:04:59 door Eddy E
 
- Ariën  -
Beheerder

- Ariën -

19/09/2013 09:11:18
Quote Anchor link
Als ik jouw was zou ik eens goede foutafhandeling toevoegen.
Lees dit eens: http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/

Als ik wat tips mag geven:
- Variabelen kopiëren (lijn 60 t/m 69) is totaal overbodig. je $_POST variabelen werken ook in je query.
- Controlleer op je formulier is verstuurd met: if($_SERVER['REQUEST_METHOD']=="POST") { i.p.v. een isset()
- Beveilig je $_POST variabelen in je query met mysql_real_escape_string() tegen SQL-injection (hacking)
- Variabelen horen buiten quotes (in je query zie ik dat)
- Backticks (` <<-- die komma-achtige tekens ) zijn onnodig als je correct SQL wilt schrijven.
Gewijzigd op 19/09/2013 09:18:37 door - Ariën -
 
Erwin H

Erwin H

19/09/2013 09:23:21
Quote Anchor link
En de fout is dat je een quote mist voor $voorletters en voor $straat in je query. Als je nu al de foutafhandeling Aar noemt had gehad dan had je je niet blind hoeven te staren, maar had je gewoon de foutmelding kunnen lezen.
 
Arjan van Rossen

Arjan van Rossen

19/09/2013 10:31:36
Quote Anchor link
Met foutoplossing en wat gepuzzel.. er zaten nog meer fouten in zoals dit stuk wat ik tijdens het kopieren niet goed veranderd had

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?PHP
                    $title
=$_POST['ambtenaarnummer'] ;
                    $author= $_POST['achternaam'] ;                    
                    $name=$_POST['tussenvoegsel'] ;
                    $copy=$_POST['voorletters'] ;
                    $title=$_POST['voornamen'] ;
                    $author= $_POST['groep'] ;                    
                    $name=$_POST['staat'] ;
                    $copy=$_POST['postcode'] ;
                    $name=$_POST['plaats'] ;
                    $copy=$_POST['telefoon'] ;
?>


Nu op naar edit en delete en zoeken

Toevoeging op 19/09/2013 13:27:07:

Ik ben bezig met het script te proberen om te verwijderen en ik krijg hetzelfde probleem als vorige keer dat ik een poging deed. Ik krijg een foutmelding, namelijk

Warning: Cannot modify header information - headers already sent by (output started at /home/schoolme/public_html/ret/db.php:10) in /home/schoolme/public_html/ret/del.php on line 11

Maar hij verwijderd wel de data uit de database. Ik kon toen al nergens op internet vinden hoe ik deze melding kan oplossen.. wellicht kunnen jullie dat vertellen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    # errors weergeven
    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);
    
    include("db.php");  

    $id =$_REQUEST['ID'];
    
    
    // sending query
    mysql_query("DELETE FROM controleurs WHERE ID = '$id'")
    or die(mysql_error());      
    
    header("Location: index.php");
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/09/2013 14:32:54
Quote Anchor link
De waarschuwing
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: Cannot modify header information - headers already sent by (output started at /home/schoolme/public_html/ret/db.php:10) in /home/schoolme/public_html/ret/del.php on line 11

komt van de functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php header("Location: index.php"); ?>
.

Je kunt headers alleen versturen zolang er nog geen output verstuurd is naar de browser. Onder output valt onder andere alles wat je echo't en ook tekst, html of tekens die buiten de php tags staan.

Dus eerst headers sturen en daarna pas output genereren. (wat overigens bij een redirect geen zin heeft)
Gewijzigd op 19/09/2013 14:34:12 door Frank Nietbelangrijk
 
Erwin H

Erwin H

19/09/2013 14:39:38
Quote Anchor link
Arjan van Rossen op 19/09/2013 10:31:36:
Warning: Cannot modify header information - headers already sent by (output started at /home/schoolme/public_html/ret/db.php:10) in /home/schoolme/public_html/ret/del.php on line 11

Maar hij verwijderd wel de data uit de database. Ik kon toen al nergens op internet vinden hoe ik deze melding kan oplossen.. wellicht kunnen jullie dat vertellen?

Werkelijk? Je kan er niets over vinden? Dan heb je niet erg lang gezocht. Zelfs hier op het forum komt deze fout letterlijk dagelijks langs. En als je het even rechtsboven in de zoekbalk invoert krijg je al genoeg topics waarin elke keer weer hetzelfde verhaal wordt afgestoken:
http://www.phphulp.nl/zoeken/headers+already+sent/
 
- Ariën  -
Beheerder

- Ariën -

19/09/2013 15:19:00
Quote Anchor link
Ik was even benieuwd, Arjan, of je mijn tips had gelezen, want ik zie zo maar weer een paar fouten opduiken, waaronder de gevreesde SQL-injection.
 
Arjan van Rossen

Arjan van Rossen

19/09/2013 16:43:38
Quote Anchor link
Erwin H op 19/09/2013 14:39:38:
Arjan van Rossen op 19/09/2013 10:31:36:
Warning: Cannot modify header information - headers already sent by (output started at /home/schoolme/public_html/ret/db.php:10) in /home/schoolme/public_html/ret/del.php on line 11

Maar hij verwijderd wel de data uit de database. Ik kon toen al nergens op internet vinden hoe ik deze melding kan oplossen.. wellicht kunnen jullie dat vertellen?

Werkelijk? Je kan er niets over vinden? Dan heb je niet erg lang gezocht. Zelfs hier op het forum komt deze fout letterlijk dagelijks langs. En als je het even rechtsboven in de zoekbalk invoert krijg je al genoeg topics waarin elke keer weer hetzelfde verhaal wordt afgestoken:
http://www.phphulp.nl/zoeken/headers+already+sent/



Deze heb ik inmiddels opgelost. Het ging om
db.php:10
Daar stond op regel 10 de ?> tag en daarna 2 lege regels. Die heb ik verwijderd en dat bleek voldoende.. De andere fout oplossen is nog niet gelukt
 
- Ariën  -
Beheerder

- Ariën -

19/09/2013 16:45:14
Quote Anchor link
Pas gewoon goede foutafhandeling toe, en beveilig je $_POST, $_GET en $_COOKIE variabelen als je deze in je query gebruikt. $_REQUEST is een afrader, gebruik gewoon $_POST of $_GET.
 
Arjan van Rossen

Arjan van Rossen

19/09/2013 16:48:05
Quote Anchor link
- Aar - op 19/09/2013 15:19:00:
Ik was even benieuwd, Arjan, of je mijn tips had gelezen, want ik zie zo maar weer een paar fouten opduiken, waaronder de gevreesde SQL-injection.


Uiteraard wel gelezen maar nog niet allemaal begrepen. Opzich ben ik niet bang voor een SQL injection omdat het geen publiek toegankelijkj gebeuren is of zie ik dat verkeerd?
 
- Ariën  -
Beheerder

- Ariën -

19/09/2013 17:00:48
Quote Anchor link
Arjan van Rossen op 19/09/2013 16:48:05:
- Aar - op 19/09/2013 15:19:00:
Ik was even benieuwd, Arjan, of je mijn tips had gelezen, want ik zie zo maar weer een paar fouten opduiken, waaronder de gevreesde SQL-injection.


Uiteraard wel gelezen maar nog niet allemaal begrepen. Opzich ben ik niet bang voor een SQL injection omdat het geen publiek toegankelijk gebeuren is of zie ik dat verkeerd?

En als iemand er wel toegang tot heeft om één of andere reden?
Daarom is het de oplossing om dit gewoon consequent toe te voegen en bij elke query die je schrijft er stil bij te staan.
 
Kris Peeters

Kris Peeters

19/09/2013 17:02:00
Quote Anchor link
Arjan van Rossen op 19/09/2013 16:48:05:
Opzich ben ik niet bang voor een SQL injection omdat het geen publiek toegankelijkj gebeuren is of zie ik dat verkeerd?


Je bedoelt dat dit script echt niet op het internet komt; maar enkel op jouw locale PC (bv. xampp geïnstalleerd op jouw pc) (of eventueel in een LAN)?

Wel ja, dat helpt.

-----

Maar dan nog, is dit een slechte redenering.
Je moet user data ALTIJD escapen (of casten naar een numerieke waarde).
Dat helpt niet enkel tegen hackers; het helpt ook tegen speciale karakters.

Een voorbeeld: het woord foto's. (dus een doodgewoon woord, dat mensen zouden kunnen gebruiken in een zin)

Kijk eens wat er gebeurt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$user
= 'Jef';
$message = "De foto's zijn mooi";
$sql = "INSERT INTO shoutbox (user, message) VALUES ('$user', '$message')";
echo $sql;
?>


Je ziet dat dit een SQL syntax error geeft.

---

Je moet echt begrijpen wat SQL injection is; hoe het werkt; en wat je er tegen doet.
Anders ben je een gevaar voor je server.
Gewijzigd op 19/09/2013 17:04:11 door Kris Peeters
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.