Overview
Comment:Corrections et restrictions sur la recherche en SQL
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: cbff2cb168ac1f419d7510a282f38354f724b945
User & Date: bohwaz on 2014-02-03 15:46:49
Other Links: manifest | tags
Context
2014-02-03
15:54
Liens actions avec icône unicode check-in: 9a50bc5f21 user: bohwaz tags: trunk
15:46
Corrections et restrictions sur la recherche en SQL check-in: cbff2cb168 user: bohwaz tags: trunk
15:34
Boutons d'ordre des colonnes plus clairs check-in: 40db664167 user: bohwaz tags: trunk
Changes

Modified src/include/class.membres.php from [78366218cf] to [e67112c5ee].

680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698


















699
700
701
702
703
704
705
        return true;
    }

    public function searchSQL($query)
    {
        $db = DB::getInstance();

        if (!preg_match('/LIMIT\s+/', $query))
        {
            $query = preg_replace('/;?\s*$/', '', $query);
            $query .= ' LIMIT 100';
        }

        $st = $db->prepare($query);

        if (!$st->readOnly())
        {
            throw new UserException('Seules les requêtes en lecture sont autorisées.');
        }



















        $res = $st->execute();
        $out = [];

        while ($row = $res->fetchArray(SQLITE3_ASSOC))
        {
            if (array_key_exists('passe', $row))







<
<
<
<
<
<






>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







680
681
682
683
684
685
686






687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
        return true;
    }

    public function searchSQL($query)
    {
        $db = DB::getInstance();







        $st = $db->prepare($query);

        if (!$st->readOnly())
        {
            throw new UserException('Seules les requêtes en lecture sont autorisées.');
        }

        if (!preg_match('/LIMIT\s+/', $query))
        {
            $query = preg_replace('/;?\s*$/', '', $query);
            $query .= ' LIMIT 100';
        }

        if (!preg_match('/FROM\s+membres(?:\s+|$|;)/i', $query))
        {
            throw new UserException('Seules les requêtes sur la table membres sont autorisées.');
        }

        if (preg_match('/;\s*(.+?)$/', $query))
        {
            throw new UserException('Une seule requête peut être envoyée en même temps.');
        }

        $st = $db->prepare($query);

        $res = $st->execute();
        $out = [];

        while ($row = $res->fetchArray(SQLITE3_ASSOC))
        {
            if (array_key_exists('passe', $row))

Modified src/templates/admin/membres/recherche_sql.tpl from [dd453e1022] to [3beaec155c].

66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<p class="actions">
    <em>Pour les membres cochés :</em>
    <input type="submit" name="move" value="Changer de catégorie" />
    <input type="submit" name="delete" value="Supprimer" />
    {csrf_field key="membres_action"}
</p>

{elseif}
<p class="alert">
    Aucun membre trouvé.
</p>
{/if}

</form>








|







66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<p class="actions">
    <em>Pour les membres cochés :</em>
    <input type="submit" name="move" value="Changer de catégorie" />
    <input type="submit" name="delete" value="Supprimer" />
    {csrf_field key="membres_action"}
</p>

{else}
<p class="alert">
    Aucun membre trouvé.
</p>
{/if}

</form>