2009-07-30 4 views
2

私はちょうどemail-address-saving form on my websiteがOperaとInternet Explorer(とにかく7)、そしておそらく他のブラウザでは動作しないことを発見しました。 Firefoxでうまく動作します。残念ながら、私は開発者ではなく、フォームのコードを書いた人との接触がなくなり、修正方法はわかりません。無力非-devのために同情を感じこの電子メールアドレス提出コードがOperaとInternet Explorerで動作しないのはなぜですか?

<form action="index.php" method="post"> 
    <input type="text" name="email" style="width: 250px;" /> 
    <input type="image" src="img/button-submit.png" name="submit" value="Submit" style="position: relative; top: 5px; left: 10px" /> 
</form> 

<?php echo $str ?> 

誰でも、ここで働いていない何のアイデアを持っている:

<?php 
    $str = ''; 

    if (isset($_POST['submit'])) 
    { 
     if(!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$", $_POST['email'])) { 
      $str = "<span style='color: red'>Not a valid email address</span>"; 
     } else { 
      $file = 'emails.txt'; 
      $text = "$_POST[email]\n"; 

      if (is_writable($file)) { 
       if (!$fh = fopen($file, 'a')) { 
        exit; 
       } 

       if (fwrite($fh, $text) === FALSE) { 
        exit; 
       } 

       fclose($fh); 
      } 
      header('Location: thankyou.html'); 
     } 
    } 
?> 

、その後、身体のビット:私はこの問題は、以下のコードとは何かを持っていると仮定します?

+1

「動作しない」と指定してください。 –

+0

エラーが発生しますか? IE7で失敗したらどうなるでしょうか? – You

答えて

2

これは、送信入力のタイプが「画像」であることが原因です。送信時には、IE7はクリックのx座標とy座標を返します。

これはトリックを行う必要があります。

を交換してください:

if (isset($_POST['submit'])) 

で:

if (isset($_POST['submit']) || isset($_POST['submit_x'])) 
+0

提案していただきありがとうございますが、残念ながら、これはindex.phpがFirefox上でまったく読み込まれないように思われ、修正しませんでしたオペラの問題私はMac上にいるので、IEのチェックはあまり便利ではありませんが、Opera/Firefoxの問題ではあまり意味がないようです。 –

+0

これは、最初の後に嫌がらせをしていなかったためです。[[submit ']) もう一度ショットしてください(上記のコードは修正されました)。 –

+0

これは今回はうまくいった!私は非常に感謝しています! –

0

残念ながら、エラーは、まったく存在しても、PHPではなくブラウザとサーバーの間に存在します。 IE7で動作していないHTMLフォームのような詳細を提供できれば、もっと手助けすることができます。

+0

ありがとう、私はhtml形式を追加しました –

0

form要素は自己閉鎖されています。開始タグの末尾にある/を削除すれば正常に動作します。 (ER、それかもしれない仕事。いずれかの方法は、末尾のスラッシュがあってはならない。)

+0

私は末尾の/を削除しました(更新されたhtmlを参照)が、残念ながら問題はまだ残っています:/ –

0

あなたのコード内のPHPは、フォームと同じファイルであると仮定すると...あなたが名前を追加してみてくださいあなたのPHPファイルのフォームのアクションに。

<form action="" method="post"> 

が... ...

<form action="name_of_php_file" method="post"> 
+0

ありがとう;コードは実際にはフォーム(index.php)と同じファイルにありますので、action = "index.php"に変更しました。残念ながらまだ動作しません:( –

+0

は完全に有効で、現在のページに投稿する最良の方法です。 – alexanderpas

-1

になり、私はこれで問題が解決しないけど、私はラインが好きではない:

$text = "$_POST[email]\n"; 

はそれではないです悪い練習ですか?私は何年もPHPを使用していませんでしたが、あなたは

$text = $_POST['email'] . "\n"; 

などに変更する必要があります。 $_POST[email]を配列キーの引用符なしで使用すると、PHPはまず「email」という名前の定数を探します。それが見つからない場合にのみ、emailを文字列に変換し、その値を連想配列から引き出します。ちょうど無駄なCPUパワー。

+0

$ _POST ['email'] '$ _POST ['submit']'よりも実際にはありません – You

+0

実際には文字列の中でこれは1次元配列の項目を参照する正しい方法ですが、あなたが2次元配列にアクセスしようとしている場合、 "{$ array ['x'] ['y']}"を実行する必要があります。 – deceze

+0

参照:http://php.net/manual/en/language.types.string.php#language.types.string.parsing – deceze

1

は、それはあなたの形式でブラウザベースの問題

である、あなたは<input type="image" />使用していました

IEではなく、それが唯一のkey_x/value_xとkey_y/value_yペア

を送信し、イメージタイプ入力の名前/値のペアを渡しません これは完全にサポートされているので、あなたがprobaly、交換/追加など <input type="submit" />を使用したい

+0

画像を使用する必要がある場合は、

0

フォームには、フォームを送信する場合にのみ有効で表示される非表示フィールドが含まれています。何かのように:ボタンを提出し、全体の作業として

<?php 
    $str = ''; 

    if (isset($_POST["checkemail"])) 
    { 
     //-- rest of your code 
    } 
?> 

これは、あなたがイメージを維持することができます:

<input type="hidden" name="checkemail" value="1" /> 

次に、あなたのPHPには、この特定の変数をチェックする場合は、条件を変更イメージ・タイプ・ボタンの名前の価値をどのように送るかという点で異なるブラウザー。

関連する問題