WordPress.org

Make WordPress Core

Ticket #15729: 15729-3.diff

File 15729-3.diff, 6.5 KB (added by kapeels, 7 years ago)

Forgot not to use heredoc and nowdoc. This one doesn't.

  • wp-admin/setup-config.php

     
    8888<link rel="stylesheet" href="css/install.css" type="text/css" />
    8989
    9090</head>
    91 <body>
     91<body onload="setFocus();">
    9292<h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
    9393<?php
    9494}//end function display_header();
    9595
    9696switch($step) {
    9797        case 0:
    98                 display_header();
     98                display_header();           
    9999?>
    100100
    101101<p>Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding.</p>
     
    114114        break;
    115115
    116116        case 1:
    117                 display_header();
     117            display_header();
     118            if(is_numeric($_POST['error'])) {
     119                switch($_POST['error']) {
     120                    case 1 :
     121                        $error_msg  =  "Cannot connect to the database server with the provided username and password.";
     122                        $focus_ele  =   "uname";
     123                    break;
     124                    case 2 :
     125                        $error_msg  =  "Cannot select the database.";
     126                        $focus_ele  =   "dbname";
     127                    break;
     128                    case 3 :
     129                        $error_msg  =  "The table prefix can contain only letters, numbers, and underscores.";
     130                        $focus_ele  =   "prefix";
     131                    break;
     132                }               
     133                ?>
     134                <script type="text/javascript">
     135                    function setFocus() {
     136                        document.getElementById('<?php echo $focus_ele; ?>').focus();
     137                    }
     138                </script>
     139                <p style="color:red;"><?php echo $error_msg; ?></p>
     140                <?php               
     141            }
     142            $dbname =   !empty($_POST['dbname']) ? trim($_POST['dbname']) : 'wordpress';
     143            $uname  =   !empty($_POST['uname']) ? trim($_POST['uname']) : 'username';
     144            // password can be left blank
     145            $passwrd=   isset($_POST['pwd']) ? $_POST['pwd'] : 'password';
     146            $dbhost =   !empty($_POST['dbhost']) ? trim($_POST['dbhost']) : 'localhost';
     147            $prefix =   !empty($_POST['prefix']) ? trim(htmlspecialchars($_POST['prefix']),ENT_QUOTES) : 'wp_';           
    118148        ?>
    119149<form method="post" action="setup-config.php?step=2">
    120150        <p>Below you should enter your database connection details. If you're not sure about these, contact your host. </p>
    121151        <table class="form-table">
    122152                <tr>
    123153                        <th scope="row"><label for="dbname">Database Name</label></th>
    124                         <td><input name="dbname" id="dbname" type="text" size="25" value="wordpress" /></td>
     154                        <td><input name="dbname" id="dbname" type="text" size="25" value="<?php echo $dbname; ?>" /></td>
    125155                        <td>The name of the database you want to run WP in. </td>
    126156                </tr>
    127157                <tr>
    128158                        <th scope="row"><label for="uname">User Name</label></th>
    129                         <td><input name="uname" id="uname" type="text" size="25" value="username" /></td>
     159                        <td><input name="uname" id="uname" type="text" size="25" value="<?php echo $uname; ?>" /></td>
    130160                        <td>Your MySQL username</td>
    131161                </tr>
    132162                <tr>
    133163                        <th scope="row"><label for="pwd">Password</label></th>
    134                         <td><input name="pwd" id="pwd" type="text" size="25" value="password" /></td>
     164                        <td><input name="pwd" id="pwd" type="text" size="25" value="<?php echo $passwrd; ?>" /></td>
    135165                        <td>...and MySQL password.</td>
    136166                </tr>
    137167                <tr>
    138168                        <th scope="row"><label for="dbhost">Database Host</label></th>
    139                         <td><input name="dbhost" id="dbhost" type="text" size="25" value="localhost" /></td>
     169                        <td><input name="dbhost" id="dbhost" type="text" size="25" value="<?php echo $dbhost; ?>" /></td>
    140170                        <td>You should be able to get this info from your web host, if <code>localhost</code> does not work.</td>
    141171                </tr>
    142172                <tr>
    143173                        <th scope="row"><label for="prefix">Table Prefix</label></th>
    144                         <td><input name="prefix" id="prefix" type="text" id="prefix" value="wp_" size="25" /></td>
     174                        <td><input name="prefix" id="prefix" type="text" id="prefix" value="<?php echo $prefix; ?>" size="25" /></td>
    145175                        <td>If you want to run multiple WordPress installations in a single database, change this.</td>
    146176                </tr>
    147177        </table>
     
    161191                $prefix = 'wp_';
    162192
    163193        // Validate $prefix: it can only contain letters, numbers and underscores
    164         if ( preg_match( '|[^a-z0-9_]|i', $prefix ) )
    165                 wp_die( /*WP_I18N_BAD_PREFIX*/'<strong>ERROR</strong>: "Table Prefix" can only contain numbers, letters, and underscores.'/*/WP_I18N_BAD_PREFIX*/ );
     194        if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) {               
     195                $prefix =   htmlspecialchars($prefix,ENT_QUOTES);
     196                setupconfigstep2error('<strong>ERROR</strong>: "Table Prefix" can only contain numbers, letters, and underscores.');                             
     197        }
    166198
    167199        // Test the db connection.
    168200        /**#@+
     
    176208
    177209        // We'll fail here if the values are no good.
    178210        require_wp_db();
    179         if ( ! empty( $wpdb->error ) ) {
    180                 $back = '<p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button">Try Again</a></p>';
    181                 wp_die( $wpdb->error->get_error_message() . $back );
     211        if ( ! empty( $wpdb->error ) ) {               
     212                setupconfigstep2error( $wpdb->error->get_error_message() );
    182213        }
    183214
    184215        // Fetch or generate keys and salts.
     
    272303        endif;
    273304        break;
    274305}
     306
     307function setupconfigstep2error($message) {
     308    global $wpdb,$dbname,$uname,$passwrd,$dbhost,$prefix;
     309    $formdo =   '';             
     310    switch(key($wpdb->error->errors)) {
     311        case 'db_connect_fail':
     312           $formdo  =   1;
     313        break;
     314        case 'db_select_fail':
     315           $formdo  =   2;
     316        break;
     317        // table prefix error can't thrown by wpdb
     318        default :
     319           $formdo  =   3;
     320        break;
     321    }
     322        $back = '<p class="step">
     323    <form action="setup-config.php?step=1" method="post"> 
     324        <input name="error" type="hidden" value="' . $formdo . '" />
     325        <input name="dbname" type="hidden" value="' .$dbname. '" />             
     326        <input name="uname" type="hidden" value="' .$uname. '" />               
     327        <input name="pwd" type="hidden" value="' .$passwrd. '" />                       
     328        <input name="dbhost" type="hidden" value="' .$dbhost. '" />             
     329        <input name="prefix" type="hidden" id="prefix" value="' .$prefix. '" />   
     330        <input type="submit" class="button" value="Try Again" name="try-again">
     331    </form>
     332          </p>';
     333        wp_die($message . $back);
     334}
    275335?>
    276336</body>
    277337</html>