2012-04-19 8 views
1

でメールを送信しようとしています1)$ _GET ['id']を使ってmysqlの行を定義してください 2)データベース(メールアドレスと を含む)3)抽出された電子メールアドレスに電子メールを送信します。

エラー報告でエラーは報告されません(貼り付けられたコードはコメントアウトされていることに注意してください)が、以下の変数($ street2と$ email)はインクルードファイルで保持されないようです。エコーはすべてコメントアウトされていないとうまく動作します。実際の電子メールアドレスで$ email変数(インクルードファイル上に表示されていない)を置き換えると、すべて正常に送信されます。

私が注意しなければならないのは、9行目ですが、$ idを定義するとすべてうまくいきます。しかし、$ _GETを使用して$ id変数を定義しようとすると、エコーされた変数がまだ正常に表示されますが(dbクエリが成功したことを意味します)、インクルードファイルは機能しません。

ここに私のコードです。これはHTMLフォームの上に置かれます。コード内にいくつかのコメントを追加しましたので、うまくいっているかどうかをよりよく知ることができます。ここで

<?php 
session_start() or die("Could not start session."); 

//error_reporting(E_ALL); 
//ini_set('display_errors', '1'); 
$id = 0; 
if(isset($_GET['id']) && is_numeric($_GET['id'])) 
    $id = (int)$_GET['id']; 
//$id=4; 
//if Line 9 is not commented out, then the whole script works fine and email is sent 
require('connect.php'); 

$query1 = mysql_query("SELECT street2 FROM prop_one WHERE sellerID='$id'") or die("OOPS: Bad query1"); 
$row1 = mysql_fetch_assoc($query1, MYSQL_NUM); 
$street2 = $row1[0]; 
//echo "This is $street2"; 

$query2=mysql_query("SELECT email FROM account WHERE sellerID='$id'") or die("OOPS: Bad query2"); 
$row2 = mysql_fetch_assoc($query2, MYSQL_NUM); 
$email = $row2[0]; 
//echo "<br>This is $email"; 

if (isset($_POST['submit'])) 
{ 
include_once("emailSeller_inc.php"); 
} 
?> 

は形式です:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="emailToSeller"> 
<fieldset> 
    <legend>Your Contact Info 
    </legend> 
    <label for="conFName">First name*</label> 
    <input name="conFName" type="text" id="conFName" value="<?php echo stripslashes(htmlentities($conFName)) ?>" placeholder="required" required = "required" size="35" maxlength="50"/> 
<label for="conLName">Last name</label> 
<input name="conLName" type="text" id="conLName" value="<?php echo stripslashes(htmlentities($conLName)) ?>" size="35" maxlength="50"/> 
<label for="conEmail">Email*</label> 
<input name="conEmail" type="email" id="conEmail" value="<?php echo stripslashes(htmlentities($conEmail)) ?>" placeholder="required" required="required" size="35" maxlength="50"/> 
<label for="conTel">Phone</label> 
    <input name="conTel" type="text" id="conTel" value="<?php echo stripslashes(htmlentities($conTel)) ?>" placeholder="" size="25" maxlength="15"/>&nbsp;e.g., 555.555.5555 
</fieldset> 

<fieldset style="text-align: center; position: absolute; top: -200; z-index: -1000;"> 
<input class="teaser" type="submit" name="submit" id="submit" value="Submit"/> 
</fieldset> 

<fieldset> 
    <legend>Your Message 
    </legend> 
    <label for="conSubject">Subject*</label> 
    <input name="conSubject" type="text" id="conSubject" value="<?php echo stripslashes(htmlentities($conSubject)) ?>" placeholder="required" required="required" size="35" maxlength="50"/> 
    <label for="conMessage">Message*</label> 
    <textarea name="conMessage" type="textarea" id="conMessage" placeholder="required" required="required" cols="50" rows="8" maxlength="400"/><?php echo stripslashes(htmlentities($conMessage)) ?></textarea> 

    <label class="teaser">Email</label> 
    <input class="teaser" name="validate" id="validate" type="text" autocomplete="off" /> 
</fieldset> 

<fieldset style="text-align: center"> 
    <input class="button" type="submit" name="submit" id="submit" value="Send email"/> 
</fieldset> 
    </form> 
    </div> 
+0

echo $ _GET ['id']の処理はどうなりますか? – scalopus

+0

is_numericの代わりにis_intを試してください。そうでなければ "4e12a"のようなsthも有効です。 – Mohammer

+0

どこがconnect.phpですか?正しい経路にありますか?たぶんphp.iniからの表示エラーを有効にしたり、ログをチェックしたりして、php – kappa

答えて

1

あなたは、後で '提出' の$_POSTをチェックし、$_GETからIDを取得しようとしています。あなたのフォームのメソッドは何ですか?私の推測はあなたの方法はPOSTです。

コメントに記載されたscalopusのような9行目の前に$_GET['id']をエコーアウトするか、$_POST['id']に切り替えてみてください。コメントで述べたように

編集

は、フォームにIDの隠しフィールドを追加します。下部のelse dieはオプションで、期待どおりに動作していることを確認したら削除することができます。インクルードをもう一度isset($_POST['submit'])にラップする必要はありません.IDが設定されている場合は、サブミットすることもできます。お役に立てれば。

<?php 
    session_start() or die("Could not start session."); 

    $id = 0; 
    $email = null; 
    $street2 = null; 

    if(isset($_POST['id']) && is_numeric($_POST['id'])) 
    { 
     $id = $_POST['id']; 
     require('connect.php'); 

     $query = mysql_query("SELECT po.street2, a.email FROM prop_one po JOIN account a ON po.sellerId = a.sellerId WHERE sellerID = '$id' LIMIT 1") or die("OOPS: Bad query " . mysql_error()); 
     list($street2, $email) = mysql_fetch_row($query); 

     //echo "Street2 is $street2"; 
     //echo "<br>Email is $email"; 

     include_once("emailSeller_inc.php"); 
    } 
    else 
    { 
     die('no Id set in Post'); 
    } 
?> 
+0

メソッドが不明な場合は、代わりに$ _REQUESTを使用できます。 – scalopus

+0

KMFK:$ _GET ['id']をエコーアウトすると、それはちょうどいい数字をエコーし​​ます。 POSTの提案に感謝します。私は$ id = $ _POST ['id']を再定義しようとしましたが、依然としてスクリプトは送信に失敗します。そして、はい、フォームを送信する方法としてPOSTを使用しています。 GETが$ idを定義するために働いていないのはなぜですか?あなたのご意見ありがとうございます! – Maggie

+0

scalopus:$ _REQUESTをどうすれば使用できますか?なぜこの問題を解決できるかと思いますか?ありがとう! – Maggie

関連する問題