-2

xamppを使ってphpで登録ページを作ろうとしていますが、問題があります。私のphpファイルを実行すると、次のエラーが表示されます。

注意: 未定義のインデックス: C:\xampp\htdocs\register.php の 3 行目の UserName

注意: 未定義のインデックス: C:\xampp\htdocs\register.php の 4 行目の UserSurname

注意: 未定義のインデックス: C:\xampp\htdocs\register.php の 5 行目の UserMail

注意: 未定義のインデックス: C:\xampp\htdocs\register.php の 6 行目の UserPassword

注意: 未定義のインデックス: C:\xampp\htdocs\register.php の 7 行目の UserTel

警告:require(class.phpmailer.php)[function.require]:ストリームを開けませんでした:24行目のC:\xampp\htdocs\register.phpにそのようなファイルまたはディレクトリはありません

致命的なエラー: require() [function.require]: C:\xampp\htdocs\register.php で必要な 'class.phpmailer.php' (include_path='.;C:\xampp\php\PEAR') を開けませんでした24行目

私のphpファイル、register.php:

  <?php
$username=$_POST['UserName'];
$usersurname=$_POST['UserSurname'];
$usermail=$_POST['UserMail'];
$userpass=$_POST['UserPassword'];
$usertelephone=$_POST['UserTel']; 
    $con = mysql_connect("localhost","root","rockenpeace");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("dbe", $con);

mysql_query("INSERT INTO user (UserName,UserSurname,UserMail, UserPassword, UserTel) 
        VALUES('$username','$usersurname','$usermail','$userpass','$usertelephone')");

mysql_close($con);

try
{
    require("class.phpmailer.php");
    $mail = new PHPMailer();   
    $mail->IsSMTP();
    $mail->Mailer = "smtp";
    $mail->Host = "ssl://smtp.gmail.com";
    $mail->Port = 465;
    $mail->SMTPAuth = true;
    $mail->CharSet="utf-8";
    $mail->Username = "user@gmail.com";
    $mail->Password = "password";
    $mail->From     = "user@gmail.com";
    $mail->FromName="DBE Yazılım";
    $mail->AddAddress($_POST['usermail']); 
    $mail->Subject  = "Registration Information";
    $mail->Body     = "Hello your password is " . $userpass;
    //$mail->AddAttachment($path);
    $mail->Send();
    echo 'Message has been sent.';  
}
catch(Exception $e)
{
    echo 'hata'.$e->getMessage();
}
header("location:confirmation.php"); ?>

そして私のhtmlページで:

<input type="text" name="UserMail" id="UserMail" size="30" />   
<input type="text" name="UserName" id="UserName" size="30" />   
<input type="text" name="UserSurname" id="UserSurname" size="30" /> 
<input type="text" name="UserTel" id="UserTel" size="30" /> 
<input type="password" name="UserPassword" id="UserPassword" size="30" />
4

4 に答える 4

0

の:

<input type="text" name="fname" id="UserName" size="30" /> 

に変更name="fname"name="UserName"ます。
他のフィールドについても同じようにします。

$_POSTではnameなく、属性を使用しIDます。


または$_POSTを使用して変数が設定されているかどうかを確認する必要があります。isset()empty()

isset()

if(isset($_POST['UserName'])) $username = $_POST['UserName'];
else die("Username variable is not set.");

empty()

if(!empty($_POST['UserName'])) $username = $_POST['UserName'];
else die("Username variable is empty.");

あなたが心に留めておくべきもう一つのことは、SQLクエリでそれを使用する前にあなたの文字列をエスケープするべきであるということです。mysql_real_escape_string()

例:

$username = mysql_real_escape_string($_POST['UserName']);

strip_tags()また、エスケープと組み合わせて使用​​することもできます。

于 2012-07-17T12:03:01.897 に答える
0

まあ、それは

a)$_POSTスーパーグローバルが空です(または、少なくともあなたが考えているものが含まれていません)。このようなケースでまず疑うのはこれです。何が入っているかを確認するために実行print_r($_POST)します。

POST/GET vars が入ってくると想定するのは安全でisset()はありません。要するに、検証について話しているのです。

b) インクルードへのパスが間違っているようです。繰り返しますが、これは簡単に確認できます。実行echo file_exists('path/to/include')- が表示されない場合は1、パスが間違っています

于 2012-07-17T11:23:08.157 に答える
0

isset$_POST 配列にキーが存在することを確認するために使用します。

失敗したインクルードに関しては、ファイルがあなたの中にないことを意味するget_include_pathので、set_include_path(これは他の相対インクルードに影響を与える可能性があることに注意absolute pathしてください)で設定するか、 .

最後に、mysql_real_escape_string入力変数で使用しないと、非常に脆弱になりSQL injectionます。

サンプル

if (!isset($_POST['userName'], $_POST['key2'], .....)) {
   // handle this error, you don't have the correct inputs
} else {

   // Validate inputs

   // Escape inputs prior to inserting into database
   $username = mysql_real_escape_string($_POST['userName']);
   ...
   ...

   // Your queries
}
于 2012-07-17T11:25:01.377 に答える
0

フォーム アクションがこのページであるページをチェックインします。

そのページの入力タグの name 属性は、ここで取得しようとしているものと同じです。

お気に入り

    <input type='submit' name='submit' value='register' />
</form> 

register.php で

if(isset($_POST['submit']))
{
   // value in quotes should be same as name attribute in input tag
    $username=$_POST["username"] 
    ..
}

- アップデート

<form method ='post' action='register.php' >
    <input type="text" name="UserMail" id="UserMail" size="30" />   
    <input type="text" name="fname" id="UserName" size="30" />  
    <input type="text" name="lname" id="UserSurname" size="30" />   
    <input type="text" name="telephone" id="UserTel" size="30" />   
    <input type="password" name="userPassword" id="UserPassword" size="30" />
     </form

そして登録ページで

if(isset($_POST['UserMail']))
{
   $mail =mysql_real_escape_strings($_POST['UserMail']);
 }
if(isset($_POST['fname']))
{
   $mail =mysql_real_escape_strings($_POST['fname']);
 }
 if(isset($_POST['lname']))
 {
   $mail =mysql_real_escape_strings($_POST['lname']);
 }
于 2012-07-17T11:41:32.663 に答える