0

シナリオは次のとおりです。チェックボックスがほとんどない連絡フォームがあります。

<input type="text" name="cola[]" value="coke" />
<input type="text" name="cola[]" value="pepsi" />
<input type="text" name="cola[]" value="rc" />

jQueryのシリアル化を使用して、データ文字列を私のmailer.phpように送信しました:

$.ajax({
    type: "POST",
    url: "http://mydomain.com/mailer",
    data: dataString,
    success: function() {//some function}
});

.phphtaccess 書き換え規則により、URL から拡張子を省略しなければならなかったことに注意してください。3 つのチェックボックスがすべてオンになっている場合、データ文字列は次のようになります&cola=coke&cola=pepsi&cola=rc。を使って確認しconsole.logました。

mailer.php次のようになります。

$cola = $_POST["cola"];
// other code
$message = "<p>" . $cola . "</p>";
// code to mail it out

ただし、メールが正常に送信されると、メールの本文には「cola、pepsi、rc」ではなく「Array」と表示されます。

私のhtaccessの書き換え条件と関係があるのではないかと感じています。これは次のようになります。

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

私の書き換え条件は、URL の末尾をすべて削除/し、.php ファイル拡張子を消去して、URL が次のようになるようにすることです。domain.com/pretty

配列の内容ではなく「配列」というメッセージが表示される理由を診断してくれる人はいますか? ありがとうございました!

4

2 に答える 2

4

.htaccess の問題ではありません。実際、 $_POST['cola'] は次のような配列です。

Array 
(
[0] => 'cola'
[1] => 'pepsi'
[2] => 'rc'
)

配列をループして情報を取得する必要があります。

この助けを願っています。

于 2012-04-29T19:36:41.003 に答える
2

これは htaccess とは関係ありません。$cola 配列を間違って出力しています。

正しい方法は次のとおりです。

$cola = implode(', ', $cola);
$message = '<p>' . $cola . '</p>';

ヒント: PHP で文字列内の変数を解析しない場合は、二重引用符 "" を使用しないでください。代わりに単一引用符 '' を使用してください。"" が解析されるため、パフォーマンスが向上します。より多くの実行時間。

于 2012-04-29T19:41:46.807 に答える