我正在尝试使用jquery获取用户的ip地址并将该地址存储在var中,然后将该变量发送到我的php页面,通过SQL插入到我的数据库中。
function rateMedia(mediaId, rate, numStar) {
$('.box' + mediaId).html('<img src="design/loader-small.gif" alt=""
/>');
var ip = 1; // i would like to store the ip address in a variable
var data = {mediaId: mediaId, rate: rate, ip:ip}; // Create JSON
which will be send via Ajax, this includes the variable for the ip
$.ajax({ // JQuery Ajax
type: 'POST',
url: 'ajax/tuto-star-rating.php', // URL to the PHP file which will insert new value in the database
data: data, // We send the data string
dataType: 'json',
timeout: 3000,
success: function(data) {
$('.box' + mediaId).html('<div style="font-size: small;
color: green">Thank you for rating</div>'); // Return "Thank you
for
rating"
// We update the rating score and number of rates
$('.resultMedia' + mediaId).html('<div style="font-size:
small; color: grey">Rating: ' + data.avg + '/' + numStar + ' (' +
data.nbrRate + ' votes)</div>');
..............................
的tuto星级rating.php
if($_POST) {
$mediaId = $_POST['mediaId']; // Media ID
$rate = $_POST['rate']; // Your rate
$ip = $_POST['ip']; //i would simply like to get the ip address
like this
$host = 'localhost';
$dbname = 'mov';
$username = "root";
$password = "";
$pdo = new PDO('mysql:dbname=mov;host=localhost', $username,
$password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
...............................
$query = $bdd->execute('INSERT INTO tc_tuto_rating (media, rate, user_ip) VALUES
('.$mediaId.', '.$rate.','.$ip.')'); // insert the new rate
}
..............................
我已经尝试完全从jQuery中排除ip并在下面的php脚本中获取IP地址,这通常有效。但如果在jQuery中的帖子之前没有声明ip变量,那么它会工作,我的数据库中的ip列是空的,这样做。代码
<?php
if($_POST) {
$mediaId = $_POST['mediaId']; // Media ID
$rate = $_POST['rate']; // Your rate
$ip = $_SERVER['REMOTE_ADDR'];
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
return $ip;
}
$host = 'localhost';
$dbname = 'mov';
$username = "root";
$password = "";
$pdo = new PDO('mysql:dbname=mov;host=localhost', $username,
$password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$get_cat = $pdo->prepare("SELECT * FROM tc_tuto_rating WHERE media
= :media AND user_ip = :user_ip");
$get_cat->bindParam(":media", $mediaId, PDO::PARAM_INT);
$get_cat->bindParam(":user_ip", $ip, PDO::PARAM_INT);
$get_cat->execute();
?>
我使用var ip = 1;
来测试它。 ip地址在数据库中正确存储为1,如何正确获取正确的ip地址。我已经看到了类似的问题,并尝试了大部分问题,这些问题要么无效,要么无法弄清楚如何将解决方案与我的代码合并。