0

私は、人々がダウンロードしてサーバーに投入し、プログラミングの知識がほとんどまたはまったくなくても使用できる REST API に取り組んでいます。 https://github.com/evanstoddard/REST-Easy .

私は設定ページに ajax を使用しており、php は ajax が次のステップに進むか、ユーザーにエラーを修正するように指示するかを確認して決定するための文字列を返します。正常に動作しているように見えたのに、突然最初のステップを通過できなくなりました。

私のjavascriptでは、phpからの戻り値がログに出力されています。最初のステップは、ユーザーがサーバー URL、ユーザー名、パスワードなどの mysql サーバー情報を入力することです。接続が作成されると、「成功」が返されます。私は「成功」を得ているようです。そこにスペースまたはインデントを入れます。

このエラーが発生する前に作業していた多くのコードをコメントアウトしましたが、エラーはまだ残っています。また、リターンをチェックするために if ブロックに余分なインデントを追加し、スクリプトが成功したため、余分なビットがどこかに追加されています。

コードがたくさんあり、おそらく最善の方法ではない可動部分がたくさんある ので、ここにコードを投稿したくありません。

これがどのように機能するかの簡単な概要は次のとおりです。

ユーザー入力(htmlフォーム)→ajax→データ処理phpスクリプト→class_database.php(prints success→ajax→html)

該当するコード:

HTML:

    <form onsubmit="stepTwo('#stepOneForm'); return false;" id="stepOneForm">
        <input type="hidden" name="task" value="1" />
        <input type="text" class="inputText" id="serverURL" name="serverURL" placeholder="MySQL Server:" /><br />
        <input type="text" class="inputText" id="serverUsername" name="serverUsername" placeholder="Username:" /><br />
        <input type="text" class="inputText" id="serverPassword" name="serverPassword" placeholder="Password:" /><br />
        <input type="submit" class="blueButton" value="Connect" />
    </form>

Javascript (AJAX):

function setupForm(form){
    //console.log('Form function called.');
    var formData = $(form).serialize();

    $.ajax({
        type: "POST",
        url: "data/data_setup.php",
        data: formData,

        success: function(result) { 

        console.log(result)

        function showAndTell(hide, show){

            $(show).slideDown(600);
            $(hide).delay(300).slideUp(600);

        }

        function showMessage(message, type, holdMessage){

            var messageContainer = "#messageContainer";
            var messageText = "#messageText";
            var messageImage = "#messageImage";

            var errorImage = "<img src='images/error.png' alt='Error' height='60px' width='60px' />";
            var successImage = "<img src='images/success.png' alt='Error' height='60px' width='60px' />";

            if (type === 'error'){

                $(messageText).empty()
                $(messageImage).empty()
                $(messageText).append(message)
                $(messageImage).append(errorImage)
                $(messageContainer).slideDown(500)
                if (!holdMessage) {
                    $(messageContainer).delay(7000).slideUp(500)
                }


            }

            else if(type === 'success'){

                $(messageText).empty()
                $(messageImage).empty()
                $(messageText).append(message)
                $(messageImage).append(successImage)
                $(messageContainer).slideDown(500)
                if (!holdMessage) {
                    $(messageContainer).delay(7000).slideUp(500)
                }               



            }
        }   


        if(result === 'success'){

            showAndTell('#stepOne', '#stepTwo');
            showMessage('Successfully connected to MySQL database.', 'success');

        }

        else if (result === 'badaccess') {

            showMessage('Unsuccessful.  Please recheck information.', 'error');

        }
        else if (result === 'nserver') {
            showMessage('Please enter a server URL.', 'error');
            $('#serverURL').css('background', '#ffdadb');
        }
        else if (result === 'nserverusername') {
            showMessage('Please enter a server username.', 'error');
            $('#serverUsername').css('background', '#ffdadb');
        }
        else if (result === 'ndatabase') {
            showMessage('No database with that name.  Create it?  <a href="#" onclick="createDatabase();">Yes</a> | <a href="#" onclick="cancelLink();">No</a>', 'error', true);
        }
        else if (result === 'database') {

            showMessage('Successfully connected to that database.');
            showAndTell('#stepTwo', '#stepThree');
        }


        else {

            showMessage('Unknown error.  Please try again later.', 'error');

        }


    }
    }); 

}

PHP データ処理スクリプト:

<?php

//Include rest class
require_once('../../classes/class_rest.php');

//Get variables
$task = $_POST['task'];

$database_server = $_POST['serverURL'];
$database_username = $_POST['serverUsername'];
$database_password = $_POST['serverPassword'];

$rest_name = $_POST['restName'];

$username = $_POST['username'];
$password = $_POST['password'];
$confPassword = $_POST['confirm'];
$emailAddress = $_POST['emailAddress'];

$api_name = $_POST['apiName'];

$database_name = $_POST['databaseName'];
$table_prefix = $_POST['tablePrefix'];

if ($task == 1){


    if($database_server == ''){
        print('nserver');
    }
    else if($database_username == ''){
        print('nserverusername');
    }
    else{
        connectSQL($database_server, $database_username, $database_password);
    }
}

else if ($task == 2){

    if($rest_name == ''){

        print('nrest');

    }
    else{

        databaseDoesExist($rest_name);

    }

}

else if ($task == 3){

    if($username == ''){

        print('nuser');
        die();

    }

    if($emailAddress == ''){

        print('nemail');
        die();

    }

    if(!$confPassword == $password){

        print('nconf');
        die();  
    }

    insertUser($username, $emailAddress, $password);

}

else if ($task == 4){

}

else if ($task == 5){

}

else if ($task == 6){

}


else if($task == 9){

    createInitialDatabase();

}

else if($task == 10){

    createConfigFile();

}
?>

機能class_database.php:

//Validates sql information
function connectSQL($server, $username, $password){

    //Create sql connection
    $con = mysqli_connect($server, $username, $password);

    //Checks if connection was successful
    if (mysqli_connect_errno($con)){

        //Print 'badaccess' for ajax
        print('badaccess');

    }

    //Run if connection successful
    else{

        //Print 'success' for ajax
        print('success');

        //Adds session variables for other sql commands later on
        $_SESSION['server'] = $server;
        $_SESSION['username'] = $username;
        $_SESSION['password'] = $password;
    }

}
4

3 に答える 3

0

処理スクリプトへのいくつかのコメント: * 冒頭の <?php の前に空白がないこと、および末尾の ?> の後に空白がないことを確認してください。* UTF-8 でコード化されたソース コードの場合、いわゆる BOM はどうですか? UTF ファイルの先頭に BOM を書き込まないエディターまたはエディター設定を選択したい場合があります。* 代わりに、print('badaccess'); die('badaccess'); を使用できます。– 引数を出力し、スクリプトの実行を停止します。* require_once (およびディレクティブも同様) では、括弧を省略することをお勧めします * $task を扱う長い if...else ステートメントを 1 つの switch() に書き直すことを検討してください。

于 2013-08-09T18:03:00.613 に答える
0

私のクラスの 1 つの後、?>インデントがあり、それが私の問題の原因でした... プログラミングは時々最悪です。

于 2013-08-09T18:03:52.320 に答える