Tips welkom over deze code PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Ivo P

Ivo P

01/07/2014 12:13:38
Quote Anchor link
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 49

toch vrij duidelijk:

mysqli_real_escape_string verwacht precies 2 parameters, er wordt er 1 gegeven op regel 49 van ...
 
PHP hulp

PHP hulp

27/10/2021 19:21:57
 
Racoon smasher

racoon smasher

01/07/2014 12:41:41
Quote Anchor link
Ja maar ik kan jammer genoeg de fout niet vinden in de php.

Verder heb ik wel 2 domme fouten gevonden in me php die er niets mee te maken hadden. ik had 2 keer een mysqli_query en er stond === false en heb dit verranderd naar == false.

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
<?php
    if(count($melding) == 0)
    {

        $queryInsert = "INSERT INTO    p_video
                                    (pv_title,
                                    pv_description,
                                    pv_link)
                            VALUES    ('"
. $pv_title=mysqli_real_escape_string($_POST['pv_title']) . "',
                                    '"
. $pv_description=mysqli_real_escape_string($_POST['pv_description']) . "',
                                    '"
. $pv_link=mysqli_real_escape_string($_POST['pv_link']) . "')";
        #  Check of query is gelukt    
        if (($queryInsert = mysqli_query($queryInsert)) == false)
        {

            # als de query fout is -> foutafhandeling
            echo showSQLError($queryInsert, mysqli_error(),'Fout bij het invoegen van de post.');
        }

        else
        {
            # De query is geluk! :)
            echo 'Gebruiker is toegevoegt!';
        }
    }

?>
 
Ivo P

Ivo P

01/07/2014 13:01:31
Quote Anchor link
Quote:
Ja maar ik kan jammer genoeg de fout niet vinden in de php


tja, het zou op zich handig zijn als php bij een foutmelding ook zou vermelden in welk script en op welke regel een fout optreedt.....
oh wacht....
Gewijzigd op 01/07/2014 13:01:47 door Ivo P
 
- Ariën -
Beheerder

- Ariën -

01/07/2014 15:11:57
Quote Anchor link
Lees Ivo's vorige reactie eens over mysqli_real_escape_string(), je mist het argument van de connectie.
 
Racoon smasher

racoon smasher

01/07/2014 15:12:58
Quote Anchor link
Ik heb de problemen opgelost met jullie hulp.


als jullie nog dingen zien die beter kunnen, overbodig zijn of afvragen waarom ik dat neer zet dan hoor ik het graag.

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
<?php
include "include/config.php";

# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

# sql debug
define('DEBUG_MODE',false);  // true == aan, false == uit
    
# functie voor sql debug

function showSQLError($sql,$error,$text='Error')
{

    if (DEBUG_MODE)
    {

        return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
    }

    else
    {
        return $text;
    }
}


if($_SERVER['REQUEST_METHOD'] == "POST")
{

    $melding = array();

    if (strlen($_POST['pv_title'])=="")
    {

        $melding[] = 'Er is geen titel ingevuld!';
    }


    if (strlen($_POST['pv_description'])=="")
    {

        $melding[] = 'Er is geen beschrijving ingevuld!';
    }


    if (strlen($_POST['pv_link'])<9)
    {

        $melding[] = 'Er is geen link ingevuld!';
    }


    if(count($melding) == 0)
    {

        $queryInsert = "INSERT INTO    pv_table
                                    (pv_title,
                                    pv_description,
                                    pv_link)
                            VALUES    ('"
. $pv_title = mysqli_real_escape_string($con, $_POST['pv_title']) . "',
                                    '"
. $pv_description = mysqli_real_escape_string($con, $_POST['pv_description']) . "',
                                    '"
. $pv_link = mysqli_real_escape_string($con, $_POST['pv_link']) . "')";
        
        $queryInsert = mysqli_query($con, $queryInsert);

        // met ! check ik of het niet zo is
        if ( ! $queryInsert )
        {

          echo showSQLError($queryInsert, mysqli_error($con), 'Fout bij het invoegen van de post.');
        }

        else
        {
            # De query is geluk! :)
            echo 'Gebruiker is toegevoegt!';
        }
    }
}

?>



<fieldset>
    <?php
    if(!empty($melding))
    {

        foreach($melding as $eenMelding)
        {

            echo $eenMelding . "<br>";
        }
    }

    ?>

    <form method="post">
    
        Titel:
        <input    type="text"
                name="pv_title"
                value="<?php echo isset($_POST['pv_title']) ? $_POST['pv_title'] : false; ?>"><br>
                    
        Beschrijving:
        <input    type="text"
                name="pv_description"
                value="<?php echo isset($_POST['pv_description']) ? $_POST['pv_description'] : false; ?>"><br>
                    
        Link:
        <input    type="text"
                name="pv_link"
                value="<?php echo isset($_POST['pv_link']) ? $_POST['pv_link'] : false; ?>"><br>
                    
        <br>
        <input    type="submit"
                name="submit">
    </form>
</fieldset>
Gewijzigd op 01/07/2014 15:15:30 door racoon smasher
 
Furio Scripting

Furio Scripting

01/07/2014 15:21:45
Quote Anchor link
Ik mis nog wat validatie, volgens mij als ik dit zou typen als titel in jouw CMS: "<script>alert('mag niet...')</script>"; dan zou die dat uitvoeren... de mysqli_real_escape_string is wel goed maar dat is dus pas als je het in de database invoert, de value POSTS van je formulier zou ik ook valideren met bijvoorbeeld een standaard functie die de variable trimt en ervoor zorgt dat je geen speciale tags kan gebruiken.

Verder ziet de code er netjes uit.
 
- Ariën -
Beheerder

- Ariën -

01/07/2014 15:24:23
Quote Anchor link
De hele functie ShowSQLError() { } zou je prima in een functions.php kunnen plaatsen, zodat je die functie binnen je hele volledige script kunt gebruiken.
 
Ivo P

Ivo P

01/07/2014 15:24:33
Quote Anchor link
regel 49,50 en 51 is wat vreemd met de toewijzing aan een var en gelijktijdig het uitbreiden van een string.

"toegevoegt" is meestal met een D aan het einde.

regel 85 en verder missen htmlspecialchars()q
 
Racoon smasher

racoon smasher

01/07/2014 15:29:19
Quote Anchor link
Aar dat klopt, anders zou het twintig keer in me php bestanden voorkomen. Ga ik zeker doen.

Ivo hoe zou jij regel 49, 50 en 51 dan doen?
 
- Ariën -
Beheerder

- Ariën -

01/07/2014 15:30:50
Quote Anchor link
En $text="Error" is best nietszeggend voor je bezoekers als je query mislukt.
Vertel ze gewoon dat er een technisch probleem bij jouw kant is, en dat ze het later nog eens moeten proberen.
 
Racoon smasher

racoon smasher

01/07/2014 15:49:21
Quote Anchor link
zo is die nu:

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
<?php
include "include/config.php";

# errors weergeven
ini_set('display_errors',0); // 1 == aan , 0 == uit
error_reporting(0);

# sql debug
define('DEBUG_MODE',false);  // true == aan, false == uit
    
# functie voor sql debug

function showSQLError($sql,$error,$text='Er is een fout opgelopen tijdens het proces, probeer het later nog is!')
{

    if (DEBUG_MODE)
    {

        return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
    }

    else
    {
        return $text;
    }
}


if($_SERVER['REQUEST_METHOD'] == "POST")
{

    $melding = array();

    if (strlen($_POST['pv_title'])=="")
    {

        $melding[] = 'Er is geen titel ingevuld!';
    }


    if (strlen($_POST['pv_description'])=="")
    {

        $melding[] = 'Er is geen beschrijving ingevuld!';
    }


    if (strlen($_POST['pv_link'])<9)
    {

        $melding[] = 'Er is geen link ingevuld!';
    }


    if(count($melding) == 0)
    {

        $queryInsert = "INSERT INTO    pv_table
                                    (pv_title,
                                    pv_description,
                                    pv_link)
                            VALUES    ('"
. mysqli_real_escape_string($con, $_POST['pv_title']) . "',
                                    '"
. mysqli_real_escape_string($con, $_POST['pv_description']) . "',
                                    '"
. mysqli_real_escape_string($con, $_POST['pv_link']) . "')";
        
        $queryInsert = mysqli_query($con, $queryInsert);

        // met ! check ik of het niet zo is
        if ( ! $queryInsert )
        {

            echo showSQLError($queryInsert, mysqli_error($con), 'Fout bij het invoegen van de post.');
        }

        else
        {
            # De query is geluk! :)
            echo 'Gebruiker is toegevoegd!';
        }
    }
}

?>



<fieldset>
    <?php
    if(!empty($melding))
    {

        foreach($melding as $eenMelding)
        {

            echo $eenMelding . "<br>";
        }
    }

    ?>

    <form method="post">
    
        Titel:
        <input    type="text"
                name="pv_title"
                value="<?php echo isset($_POST['pv_title']) ? htmlspecialchars($_POST['pv_title']) : false; ?>"><br>
                    
        Beschrijving:
        <input    type="text"
                name="pv_description"
                value="<?php echo isset($_POST['pv_description']) ? htmlspecialchars($_POST['pv_description']) : false; ?>"><br>
                    
        Link:
        <input    type="text"
                name="pv_link"
                value="<?php echo isset($_POST['pv_link']) ? htmlspecialchars($_POST['pv_link']) : false; ?>"><br>
                    
        <br>
        <input    type="submit"
                name="submit">
    </form>
</fieldset>
 
- Ariën -
Beheerder

- Ariën -

01/07/2014 19:25:35
Quote Anchor link
Racoon smasher op 01/07/2014 15:29:19:
Aar dat klopt, anders zou het twintig keer in me php bestanden voorkomen. Ga ik zeker doen.


Euh... ;-)

Verder kan je define voor je DEBUG_MODE ook wel in je config geplaatst worden.

Verder snap ik deze contructie niet helemaal:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
   if (strlen($_POST['pv_title'])=="") {

Ik had toch een mooi voorbeeld gegeven met trim() en een vergelijking met een lege string?
Gewijzigd op 01/07/2014 19:27:38 door - Ariën -
 
Racoon smasher

racoon smasher

02/07/2014 16:07:51
Quote Anchor link
Ik heb het weer terug gezet, ik neem aan dat het zo moet staan en de derde wel strlen
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
    if (trim($_POST['pv_title'])=="")
    {

        $melding[] = 'Er is geen titel ingevuld!';
    }


    if (trim($_POST['pv_description'])=="")
    {

        $melding[] = 'Er is geen beschrijving ingevuld!';
    }


    if (strlen($_POST['pv_link'])<9)
    {

        $melding[] = 'Er is geen link ingevuld!';
    }

?>
 
- Ariën -
Beheerder

- Ariën -

02/07/2014 16:09:24
Quote Anchor link
En wat als iemand als URL 'tralalalalalalalaa' invuit? Is een controle op http:// en https:// niet een handiger idee?
 
Ivo P

Ivo P

02/07/2014 16:12:51
 
Racoon smasher

racoon smasher

02/07/2014 16:19:28
Quote Anchor link
Ik moet sws heel veel beveiliging aan die url geven, want het mag alleen een youtube link zijn en er moet /watch?v= achter staan, maar het kan .com en .nl zijn en na die /watch?v= komen altijd 11 tekens te staan. gaat om een video van youtube.

voor een normale link beveiliging zou ik de type veranderen naar url inplaats van text
Gewijzigd op 02/07/2014 16:21:19 door racoon smasher
 

Pagina: « vorige 1 2



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.