1

ここに PHP 初心者: フォームと php に関する簡単な質問、

Html ページのフォーム

 <form class="form" id="form" onsubmit="return validateForm()" method="post"           action="submitdatabase.php">

データベースにデータを正常に挿入できますが、特定の URL にもデータを送信するにはどうすればよいですか?

それが役立つ場合、以下は私のPHPです。言うまでもなく、動作しません:

<?php
    $con = mysql_connect("localhost","root","");
    if (!$con) {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("database", $con);
    $sql="INSERT INTO leads (fname, lname, address, phone, email)
          VALUES ('$_POST[fname]','$_POST[lname]','$_POST[address]','$_POST[phone]','$_POST[email]')";
    if (!mysql_query($sql,$con)) {
        die('Error: ' . mysql_error());
    }

    mysql_close($con)
    header("Location: URLREDIRECTION.com")
?>
4

5 に答える 5

2

PHP初心者..これは
常にこれを使用して文字列をエスケープする必要があります mysql_escape_string($var);
mysql_connect()減価償却されますmysqli_connect('host', 'user', 'password', 'database')。代わりに使用します。


<?php
$con = mysql_connect("localhost","root","");
if (!$con){
die('Could not connect: ' . mysql_error());
}

$fname = mysql_escape_string($_POST['fname']);
$lname = mysql_escape_string($_POST['lname']);
$address = mysql_escape_string($_POST['address']);
$phone = mysql_escape_string($_POST['phone']);
$email = mysql_escape_string($_POST['email']);

mysql_select_db("database", $con);
$sql="INSERT INTO leads (fname, lname, address, phone, email)
VALUES 
('$fname','$lname','$address','$phone','$email')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
header("Location: http://yoursite.com");
于 2013-05-16T21:41:47.517 に答える
1

このコード...は...少しごちゃごちゃしていて古いです。まず最初に: mysql_* 関数を使用しないでください。また、確実にユーザーのデータをエスケープする必要があります。両方を 1 つに単純化するために、PDO を使用します。ここにチュートリアルがあります (ここをクリックしてください)。また、他の人が述べたように、いくつかのセミコロンも閉じる必要がありました。

<?php
/* Create a PDO object */
$DB = new PDO("mysql:host=localhost;dbname=database",'root','');

/* Prepare the statement you want to do, in this case, an INSERT */
$con = $DB->prepare("INSERT INTO leads (fname, lname, address, phone, email)
                     VALUES (?,?,?,?,?)");

/* Execute the previous statement with the corresponding values for each '?' */
$con->execute(array($_POST['fname'],
                    $_POST['lname'],
                    $_POST['address'],
                    $_POST['phone'],
                    $_POST['email']));

/* Redirect the user */
header("Location: http://www.example.com/");

?>
于 2013-05-16T21:46:45.037 に答える
0

明らかに、これは安全ではありません。OPはこれを知っており、このようにすることを選択しました。彼が本当に故意に間違ったことをしたいのなら、私はそれで問題ありません.

この回答を読んでいる他の人は、これは恐ろしい慣行であり、明らかに彼が望んでいたので、私は回答としてのみ与えたことを覚えておく必要があります. これを使用しないでください。

実際のアプリケーションでは、SQL インジェクションの可能性を排除するために、少なくともユーザー入力から変数mysql_real_escape_string()をエスケープするために使用する$_POSTか、または (はるかに) 良いことに、準備されたステートメントと組み合わせて MySQLi または PDO を使用する必要があります。

セミコロンがありませんでした。また、リダイレクトしようとしていた場所を離れる代わりに、ヘッダー行を変更しました。見ることさえできないスクリプトをどのようにデバッグすればよいのでしょうか? ここに投稿されているとおりに試してみて、Google にアクセスできるかどうかを確認してください。そうでない場合は、別のことが起こっています。存在する場合は、header()関数を間違って入力しましたが、表示されていないためわかりませんでした。

これを試して:

<?php
$con = mysql_connect("localhost","root","");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("database", $con);
$sql="INSERT INTO leads (fname, lname, address, phone, email)
VALUES 
('$_POST[fname]','$_POST[lname]','$_POST[address]','$_POST[phone]','$_POST[email]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
header("Location: http://www.google.com");
?>

また、すでに数人が指摘しているように、mysql()機能は公式に減価償却されています。とにかく動作するはずですが。

于 2013-05-16T21:36:47.137 に答える
0

これを試してください..これは100%動作します

<?php 
  $fname=$_POST['fname'];
  $lname=$_POST['lname'];
  $phn=$_POST['phn'];
  $email=$_POST['email'];
  $street=$_POST['street'];
  $city=$_POST['city'];
  $state=$_POST['state'];
  $con=mysqli_connect('localhost','root','','database');
  $insert= "INSERT INTO table (id,name,phone,email,street,city,state) VALUES('','$fname $lname','$phn','$email','$street','$city','$state')";
$run=mysqli_query($con,$insert);
  if($run)
  {
  header('location:https://google.com');
  }
?>
于 2019-07-18T11:12:21.887 に答える
-1

ここに構文エラーがあります:

mysql_close($con)

セミコロンを追加する必要があります:

mysql_close($con);

スクリプトがheader()ステートメントの前に出力を生成する場合、リダイレクトは発生しません。警告、エラー、および意図的な出力はすべて、header()ステートメントが失敗する原因になります。

別のサイトにリダイレクトする場合は、わかりやすくするために「http://」または「https://」プレフィックスを使用することを検討してください。

header("Location: http://urlredirection.com");

自分のサイトにリダイレクトする場合は、先頭にスラッシュを付けてください:

header("Location: /your/url.php");

mysql_*最後に、非推奨の関数の代わりに mysqli または PDO を使用するようにコードを更新することを検討してください。

于 2013-05-16T21:36:05.047 に答える