1

送信するすべての入力が空白になるのはなぜですか?(下記参照)。これはJSファイルのエラーが原因だと思います。

送信されるHTMLフォーム:

                <form method="post" id="FanDetail">
                        <textarea id="bio" name="fan_bio" cols="27" rows="3"></textarea><br />
                        <input id="dob" name="fan_dob" value="(e.g. 01/05/1965)" onFocus="clearText(this)" /><br />
                        <div class="ui-widget">
                            <input id="zip" name="term" value="What is your Zipcode?" onFocus="clearText(this)" /><br />
                            <input id="actualZip" type="hidden" name="actualzipval" value="" />
                        </div><!--ui-widget :: zip -->
                        <div class="ui-widget">
                            <input id="occup" type="text"  name="term2" value="e.g. Computer Programmer, etc" onFocus="clearText(this)" /><br />
                            <input id="actualOccup" type="hidden" name="actualOccupval" value="" />
                        </div><!--ui-widget :: occup -->
                        <input id="fbkurl" type="text"  name="fan_fbk" value="e.g. SportsFan12" onFocus="clearText(this)" /><br />
                        <input id="twiturl" type="text"  name="fan_twit" value="e.g. AboutSports2012" onFocus="clearText(this)" /><br />
                        <input id="phoNum" type="text"  name="fan_pho" value="cell or home phone" onFocus="clearText(this)" /><br />
                <input style="background-image:url('../../img/save.png');" type="submit" name="saveAbout" value="" id="submit" />
                </form>

htmlフォームからの入力を処理するJSファイル:

$(document).ready(function() {
        $("form#FanDetail").submit(function() {
        // store the values from the form input box, then send via ajax below
        var bio = $('#bio').val();
        var dob = $('#dob').val();
        var zip = $('#actualZip').val();
        var occup = $('#actualOccup').val();
        var fbkurl = $('#fbkurl').val();
        var twiturl = $('#twiturl').val();
        var phoNum = $('#phoNum').val();
        $.post(
                "../../src/php/registration/about/submitvalues_about_tab.php",
                $("form#FanDetail").serialize(),
                function(){
                    $('form#FanDetail').hide(function(){
                        $('div.success').fadeIn();
                });
              });
           return false;
        });
    });

私が使用しているPHPファイルは$fan_sess_id()変数値を正しく取得していますが、他の入力はどれも機能していません。

try {
    $sth = null; #kill any possible previous connections
    ///////////////////////////////////////////////
    ######## Get  Input to Submit ############## //
    ///////////////////////////////////////////////
    $fanBio=$_POST['bio'];
    $fanDob=$_POST['dob'];
    $zipval=$_POST['zip'];
    $occupval=$_POST['occup'];
    $facebookurl=$_POST['fbkurl'];
    $twitterurl=$_POST['twiturl'];
    $phoneNum=$_POST['phoNum'];
    //$fanID=1;
    $fan_sess_id = session_id(); // assign $fan_sess_id to the current sessionID

    ### DB Connection already established above.
    $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
    $sth = $dbh->prepare("
    UPDATE Fan 
    SET fanBio='$fanBio',fanDob='$fanDob',fanDetLocID='$zipval',occupID='$occupval',
    fanFbk='$facebookurl',fanTwit='$twitterurl',fanPho='$phoneNum'
    WHERE fansessID='$fan_sess_id';
    ");
    $sth->execute();
}

最後に、これは$sth->debugDumpParams();上記のphpスクリプトで実行したときに得られる出力です。

SQL: [152] 
    UPDATE Fan 
    SET fanBio='',fanDob='',fanDetLocID='',occupID='',
    fanFbk='',fanTwit='',fanPho=''
    WHERE fansessID='90707e4c37762a38ffb50883ce64ee1b';
4

2 に答える 2

3

nameにアクセスするときに、入力をPHPコードで使用するのと同じ値に設定する必要があります$_POST

例:<textarea id="bio" name="fan_bio" cols="27" rows="3"></textarea>属性namebioに変更して、その値を。として取得します$_POST["bio"]

HTMLフォームを送信する場合、フォーム要素のname-attributeは、。ではなく値を参照するために使用されますid

于 2012-04-10T01:15:32.833 に答える
1

に間違った配列キーを使用しています$_POST。HTMLフォーム要素ID属性の代わりに、属性を使用する必要がありnameます。

$fanBio=$_POST['fan_bio'];
$fanDob=$_POST['fan_dob'];
$zipval=$_POST['term'];
$occupval=$_POST['occup'];
$facebookurl=$_POST['fan_fbk'];
$twitterurl=$_POST['fan_twit'];
$phoneNum=$_POST['fan_pho'];

もう1つの非常に重大な問題があります。PDOを使用していますが、プリペアドステートメントでプレースホルダーを使用していないため、SQLインジェクションに対して広く開放されています。変数をSQLに直接渡す代わりに、それらをプレースホルダーに置き換えます。

 $sth = $dbh->prepare("
    UPDATE Fan 
    SET fanBio=:fanBio,fanDob=:fanDob,fanDetLocID=:zipval,occupID=:occupval,
    fanFbk=:facebookurl,fanTwit=:twitterurl,fanPho=:phoneNum
    WHERE fansessID=:fan_sess_id;
    ");
    $arr_params = array(
     ':fanBio'=>$fanBio, 
     ':fanDob'=>$fanDob,
     ':zipval'=>$zipval,
     ':occupval'=>$occupval,
     ':facebookurl'=>$facebookurl,
     ':twitterurl'=>$twitterurl,
     ':phoneNum'=>$phoneNum,
     ':fan_sess_id'=>$fan_sess_id
    );
    // Execute the statement with the parameters array
    $sth->execute($arr_params);
于 2012-04-10T01:44:31.433 に答える