~ubuntu-branches/ubuntu/dapper/phpmyadmin/dapper-updates

« back to all changes in this revision

Viewing changes to mult_submits.inc.php

  • Committer: Bazaar Package Importer
  • Author(s): Piotr Roszatycki
  • Date: 2004-12-13 19:23:57 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20041213192357-5jfwhvbnxaip4zbv
Tags: 2:2.6.1-rc1-1
* New upstream release.
* Security fix: Command execution and file disclosure was found.
  See http://www.phpmyadmin.net/home_page/security.php?issue=PMASA-2004-4
  Closes: #285488.
* Remove 003.non_standard_port_fix.diff applied to upstream.
* Add commented out options 'extension' and 'AllowRoot' to default config
  file.
* Support mysqli.so extension. Autodetect modules from 'extension' option.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
<?php
2
 
/* $Id: mult_submits.inc.php,v 2.3.4.1 2004/01/14 14:22:45 lem9 Exp $ */
 
2
/* $Id: mult_submits.inc.php,v 2.11 2004/11/07 13:27:46 lem9 Exp $ */
3
3
// vim: expandtab sw=4 ts=4 sts=4:
4
4
 
5
5
 
56
56
        }
57
57
    } else if (!empty($selected_fld)) {
58
58
        $selected     = $selected_fld;
59
 
        if ($submit_mult == $strDrop) {
60
 
            $what     = 'drop_fld';
61
 
        } else {
62
 
            require('./tbl_alter.php');
 
59
        switch ($submit_mult) {
 
60
            case $strDrop:
 
61
                $what     = 'drop_fld';
 
62
                break;
 
63
            case $strPrimary:
 
64
                // Gets table primary key
 
65
                PMA_DBI_select_db($db);
 
66
                $result      = PMA_DBI_query('SHOW KEYS FROM ' . PMA_backquote($table) . ';');
 
67
                $primary     = '';
 
68
                while ($row = PMA_DBI_fetch_assoc($result)) {
 
69
                    // Backups the list of primary keys
 
70
                    if ($row['Key_name'] == 'PRIMARY') {
 
71
                        $primary .= $row['Column_name'] . ', ';
 
72
                    }
 
73
                } // end while
 
74
                PMA_DBI_free_result($result);
 
75
                if (empty($primary)) {
 
76
                    // no primary key, so we can safely create new
 
77
                    unset($submit_mult);
 
78
                    $query_type = 'primary_fld';
 
79
                    $mult_btn   = $strYes;
 
80
                } else {
 
81
                    // primary key exists, so lets as user
 
82
                    $what = 'primary_fld';
 
83
                }
 
84
                break;
 
85
            case $strIndex:
 
86
                unset($submit_mult);
 
87
                $query_type = 'index_fld';
 
88
                $mult_btn   = $strYes;
 
89
                break;
 
90
            case $strUnique:
 
91
                unset($submit_mult);
 
92
                $query_type = 'unique_fld';
 
93
                $mult_btn   = $strYes;
 
94
                break;
 
95
            case $strIdxFulltext:
 
96
                unset($submit_mult);
 
97
                $query_type = 'fulltext_fld';
 
98
                $mult_btn   = $strYes;
 
99
                break;
 
100
            case $strChange:
 
101
                require('./tbl_alter.php');
 
102
                break;
63
103
        }
64
104
    } else {
65
105
        $what = 'row_delete';
87
127
    $full_query     = '';
88
128
    $selected_cnt   = count($selected);
89
129
    $i = 0;
90
 
    foreach($selected AS $idx => $sval) {
91
 
        $i++;
 
130
    foreach ($selected AS $idx => $sval) {
92
131
        switch ($what) {
93
132
            case 'row_delete':
94
133
                $full_query .= htmlspecialchars(urldecode($sval))
116
155
                            . ';<br />';
117
156
                break;
118
157
 
 
158
            case 'primary_fld':
 
159
                if ($full_query == '') {
 
160
                    $full_query .= 'ALTER TABLE '
 
161
                                . PMA_backquote(htmlspecialchars($table))
 
162
                                . '<br />&nbsp;&nbsp;DROP PRIMARY KEY,'
 
163
                                . '<br />&nbsp;&nbsp; ADD PRIMARY KEY('
 
164
                                . '<br />&nbsp;&nbsp;&nbsp;&nbsp; '
 
165
                                . PMA_backquote(htmlspecialchars(urldecode($sval)))
 
166
                                . ',';
 
167
                } else {
 
168
                    $full_query .= '<br />&nbsp;&nbsp;&nbsp;&nbsp; '
 
169
                                . PMA_backquote(htmlspecialchars(urldecode($sval)))
 
170
                                . ',';
 
171
                }
 
172
                if ($i == $selected_cnt-1) {
 
173
                    $full_query = preg_replace('@,$@', ');<br />', $full_query);
 
174
                }
 
175
                break;
 
176
                
119
177
            case 'drop_fld':
120
178
                if ($full_query == '') {
121
179
                    $full_query .= 'ALTER TABLE '
133
191
                }
134
192
                break;
135
193
        } // end switch
 
194
        $i++;
136
195
    }
137
196
 
138
197
    // Displays the form
139
 
    echo $strDoYouReally . '&nbsp;:<br />' . "\n";
 
198
?>
 
199
<!-- Do it really ? -->
 
200
<table border="0" cellpadding="3" cellspacing="0">
 
201
    <tr>
 
202
        <th class="tblHeadError" align="left">
 
203
            <?php
 
204
    echo ($GLOBALS['cfg']['ErrorIconic'] ? '<img src="' . $GLOBALS['pmaThemeImage'] . 's_really.png" border="0" hspace="2" width="11" height="11" valign="middle" />' : '');
 
205
    echo $strDoYouReally . ':&nbsp;' . "\n";
 
206
            ?>
 
207
        </th>
 
208
    </tr>
 
209
    <tr>
 
210
        <td bgcolor="<?php echo $GLOBALS['cfg']['BgcolorOne']; ?>">
 
211
           <?php
140
212
    echo '<tt>' . $full_query . '</tt>&nbsp;?<br/>' . "\n";
141
 
    ?>
 
213
           ?>
 
214
        </td>
 
215
    </tr>
 
216
    <tr>
 
217
       <td align="right" nowrap="nowrap">
142
218
<form action="<?php echo $action; ?>" method="post">
143
219
    <?php
144
220
    echo "\n";
150
226
    } else  {
151
227
        echo PMA_generate_common_hidden_inputs();
152
228
    }
153
 
    foreach($selected AS $idx => $sval) {
 
229
    foreach ($selected AS $idx => $sval) {
154
230
        echo '    <input type="hidden" name="selected[]" value="' . htmlspecialchars($sval) . '" />' . "\n";
155
231
    }
156
232
    ?>
162
238
        echo '<input type="hidden" name="original_url_query" value="' . $original_url_query . '" />' . "\n";
163
239
    }
164
240
    ?>
165
 
    <input type="submit" name="mult_btn" value="<?php echo $strYes; ?>" />
166
 
    <input type="submit" name="mult_btn" value="<?php echo $strNo; ?>" />
 
241
    <input type="submit" name="mult_btn" value="<?php echo $strYes; ?>" id="buttonYes" />
 
242
    <input type="submit" name="mult_btn" value="<?php echo $strNo; ?>" id="buttonNo" />
167
243
</form>
 
244
        </td>
 
245
    </tr>
 
246
</table>
168
247
    <?php
169
248
    echo"\n";
170
249
 
183
262
 
184
263
    $sql_query      = '';
185
264
    $selected_cnt   = count($selected);
 
265
    $run_parts      = FALSE; // whether to run query after each pass
 
266
    $use_sql        = FALSE; // whether to include sql.php at the end (to display results)
 
267
 
 
268
    if ($query_type == 'primary_fld') {
 
269
        // Gets table primary key
 
270
        PMA_DBI_select_db($db);
 
271
        $result      = PMA_DBI_query('SHOW KEYS FROM ' . PMA_backquote($table) . ';');
 
272
        $primary     = '';
 
273
        while ($row = PMA_DBI_fetch_assoc($result)) {
 
274
            // Backups the list of primary keys
 
275
            if ($row['Key_name'] == 'PRIMARY') {
 
276
                $primary .= $row['Column_name'] . ', ';
 
277
            }
 
278
        } // end while
 
279
        PMA_DBI_free_result($result);
 
280
    }
 
281
    
186
282
    for ($i = 0; $i < $selected_cnt; $i++) {
187
283
        switch ($query_type) {
188
284
            case 'row_delete':
189
285
                $a_query = urldecode($selected[$i]);
 
286
                $run_parts = TRUE;
190
287
                break;
191
288
 
192
289
            case 'drop_db':
194
291
                $a_query   = 'DROP DATABASE '
195
292
                           . PMA_backquote(urldecode($selected[$i]));
196
293
                $reload    = 1;
 
294
                $run_parts = TRUE;
197
295
                break;
198
296
 
199
297
            case 'drop_tbl':
207
305
            case 'check_tbl':
208
306
                $sql_query .= (empty($sql_query) ? 'CHECK TABLE ' : ', ')
209
307
                           . PMA_backquote(urldecode($selected[$i]));
 
308
                $use_sql    = TRUE;
210
309
                break;
211
310
 
212
311
            case 'optimize_tbl':
213
312
                $sql_query .= (empty($sql_query) ? 'OPTIMIZE TABLE ' : ', ')
214
313
                           . PMA_backquote(urldecode($selected[$i]));
 
314
                $use_sql    = TRUE;
215
315
                break;
216
316
 
217
317
            case 'analyze_tbl':
218
318
                $sql_query .= (empty($sql_query) ? 'ANALYZE TABLE ' : ', ')
219
319
                           . PMA_backquote(urldecode($selected[$i]));
 
320
                $use_sql    = TRUE;
220
321
                break;
221
322
 
222
323
            case 'repair_tbl':
223
324
                $sql_query .= (empty($sql_query) ? 'REPAIR TABLE ' : ', ')
224
325
                           . PMA_backquote(urldecode($selected[$i]));
 
326
                $use_sql    = TRUE;
225
327
                break;
226
328
 
227
329
            case 'empty_tbl':
231
333
                    $a_query = 'DELETE FROM ';
232
334
                }
233
335
                $a_query .= PMA_backquote(htmlspecialchars(urldecode($selected[$i])));
 
336
                $run_parts = TRUE;
234
337
                break;
235
338
 
236
339
            case 'drop_fld':
239
342
                           . ' DROP ' . PMA_backquote(urldecode($selected[$i]))
240
343
                           . (($i == $selected_cnt-1) ? ';' : '');
241
344
                break;
 
345
 
 
346
            case 'primary_fld':
 
347
                $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ( empty($primary) ? '' : ' DROP PRIMARY KEY,') . ' ADD PRIMARY KEY( ' : ', ')
 
348
                           . PMA_backquote(urldecode($selected[$i]))
 
349
                           . (($i == $selected_cnt-1) ? ');' : '');
 
350
                break;
 
351
 
 
352
            case 'index_fld':
 
353
                $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD INDEX( ' : ', ')
 
354
                           . PMA_backquote(urldecode($selected[$i]))
 
355
                           . (($i == $selected_cnt-1) ? ');' : '');
 
356
                break;
 
357
 
 
358
            case 'unique_fld':
 
359
                $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD UNIQUE( ' : ', ')
 
360
                           . PMA_backquote(urldecode($selected[$i]))
 
361
                           . (($i == $selected_cnt-1) ? ');' : '');
 
362
                break;
 
363
 
 
364
            case 'fulltext_fld':
 
365
                $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_backquote($table) . ' ADD FULLTEXT( ' : ', ')
 
366
                           . PMA_backquote(urldecode($selected[$i]))
 
367
                           . (($i == $selected_cnt-1) ? ');' : '');
 
368
                break;
242
369
        } // end switch
243
370
 
244
371
        // All "DROP TABLE","DROP FIELD", "OPTIMIZE TABLE" and "REPAIR TABLE"
245
372
        // statements will be run at once below
246
 
        if ($query_type != 'drop_tbl'
247
 
            && $query_type != 'drop_fld'
248
 
            && $query_type != 'repair_tbl'
249
 
            && $query_type != 'analyze_tbl'
250
 
            && $query_type != 'optimize_tbl'
251
 
            && $query_type != 'check_tbl') {
252
 
 
 
373
        if ($run_parts) { 
253
374
            $sql_query .= $a_query . ';' . "\n";
254
 
 
255
375
            if ($query_type != 'drop_db') {
256
 
                PMA_mysql_select_db($db);
 
376
                PMA_DBI_select_db($db);
257
377
            }
258
 
            $result = @PMA_mysql_query($a_query) or PMA_mysqlDie('', $a_query, FALSE, $err_url);
 
378
            $result = @PMA_DBI_query($a_query) or PMA_mysqlDie('', $a_query, FALSE, $err_url);
259
379
        } // end if
260
380
    } // end for
261
381
 
262
 
    if ($query_type == 'drop_tbl'
263
 
        || $query_type == 'drop_fld') {
264
 
        PMA_mysql_select_db($db);
265
 
        $result = @PMA_mysql_query($sql_query) or PMA_mysqlDie('', '', FALSE, $err_url);
266
 
    } elseif ($query_type == 'repair_tbl'
267
 
        || $query_type == 'analyze_tbl'
268
 
        || $query_type == 'check_tbl'
269
 
        || $query_type == 'optimize_tbl') {
 
382
    if ($use_sql) {
270
383
        require('./sql.php');
 
384
    } elseif (!$run_parts) {
 
385
        PMA_DBI_select_db($db);
 
386
        $result = PMA_DBI_query($sql_query);
271
387
    }
272
388
 
273
389
}