php网页里面一个非常简单的问题,实在小白,没接触过,就是不懂啊,求大神
<?php
function GetIP(){
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$cip = $_SERVER["HTTP_CLIENT_IP"];
}
elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
$cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif(!empty($_SERVER["REMOTE_ADDR"])){
$cip = $_SERVER["REMOTE_ADDR"];
}
else{
$cip = "无法获取!";
}
return $cip;
}
?>
现在这个代码是正常的,ip可以正常获取,我现在想用个div把获取的ip显示出来,类似下面的
<div>192.168.1.1</div>
还补充个问题,用户在网站上面提交信息,其中用户填写的信息,js里面是这样提交的,如下
var username = $("#username").val();
如果我想吧ip做成跟这个一样的提交方式,如下
var ip = $("#ip").val();
那么刚才的php代码里面需要怎么修改啊。 展开
先说你的第一个问题吧
方法大致有2类:前台动态申请,后台直接输出
后台直接输出是在由服务器解释后,直接传给浏览器,整个页面时写死的
div内调用:
<div><?php echo GetIP(); ?></div>
<?php
function GetIP(){
..........
}
?>
或者直接将这段代码套在一个div内,然后把最后的return改成echo也行
<div>
<?php
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
.....
echo $cip;
?></div>
前台动态申请就需要涉及到ajax了
html:
<html>
<body><div id="ip"></div></body>
</html>
js:
window.onload={
$.ajax({url:"getip.php",data:{},type:"post",success:function(backdata){
$("#ip").html(backdata);
});
}
getip.php:
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
.....
echo $cip;
关于第二个问题,var username = $("#username").val();仅仅是这样是没法向后台递交数据的。这样最多是获取id为username中的数据。如果想通过js向后台递交数据,就用ajax就行了
非常感谢,我看的不是很懂,我只要php获取到ip,然后和用户填写的信息一起提交到数据库,直接
var username = $("#username").val();
就可以提交到数据库,现在获取的ip不需要显示出来,只要一起提交到数据库就可以了
php获取到ip → 用户提交信息 → var ip = $("#ip").val(); 提交到数据库
就这三步,请问需要修改php代码吗?
首先我现在根据你的条件推测以下几点
1、你的数据库在服务器端
2、你想记录那些ip访问了你的服务器
3、你从某人或某网站那copy了一段代码
如果我有一点推测错了,下面的写一切请无视。
首先,var这种定义格式明显是js不是php
数据库在服务器端,那么只有php可以操作你的数据库,而js是操作不到数据库的。
只有js以某种形式将数据提交到服务器端的php页,然后由服务器处理后再由php写入数据库
var ip = $("#ip").val();这种写法只是将id为ip的标签中的值取出赋给ip这个js变量罢了,没有递交或者写入数据库的功能。
可能您找的代码中有另将username提交到服务器的代码,但是如果仅是照着这个样子仿照一个获取值得ip出来,是没法达到效果的,还要仿照一个递交的代码
楼主可以运行以下这个代码
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<script src="java.inc.bag/jquery-1.9.1.min.js"></script>
<body>
<input id="ip" type="text" value="192.168.1.1">
</body>
</html>
<script type="text/javascript">
var ip = $("#ip").val();
</script>
你会发现一点效果没有,简单粗暴的告诉你这么只是这么一句话不可能提交数据到服务器。
如果是像我上面猜测的第二条那样,那么完全不需要将数据传递到客户端。直接在服务器端操作就好
<?php
function GetIP(){....}
$ip = GetIP();
$sqlstr="insert into $table_name('ip') values($ip)";
mysql_query($sqlstr);
?>
插入数据库语言自己去改一下吧,我就是象征性的写了写。
这么写完全没有显示在客户端,也将访问网站的客户端ip写到了数据库
js:
var ip=$("#ip").html();
网页中不需要显示
直接把ip一起提交上来,直接var ip=$("#ip").html();
可以吗?