準(zhǔn)備數(shù)據(jù)庫
目前成都創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、太子河網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
本例我們使用Mysql數(shù)據(jù)庫,創(chuàng)建一張user表,表結(jié)構(gòu)如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(30) NOT NULL COMMENT '用戶名',
`password` varchar(32) NOT NULL COMMENT '密碼',
`login_time` int(10) default NULL COMMENT '登錄時(shí)間',
`login_ip` varchar(32) default NULL COMMENT '登錄IP',
`login_counts` int(10) NOT NULL default '0' COMMENT '登錄次數(shù)',
PRIMARY KEY ?(`id`)
) ENGINE=MyISAM ?DEFAULT CHARSET=utf8;
然后往user表中插入一條用戶信息數(shù)據(jù):
INSERT INTO `user` (`id`, `username`, `password`, `login_time`, `login_ip`, `login_counts`)
VALUES(1, 'demo', 'fe01ce2a7fbac8fafaed7c982a04e229', '', '', 0);
index.php
用戶在輸入用戶名和密碼后,提示用戶登錄成功,并顯示相關(guān)登錄信息,如果點(diǎn)擊“退出”,則退出到用戶登錄界面。
進(jìn)入index.php,如果用戶已登錄則顯示登錄信息,如果未登錄則顯示登錄框要求用戶登錄。
div id="login"
h3用戶登錄/h3
?php
if(isset($_SESSION['user'])){ ??
div id="result"
pstrong?php echo $_SESSION['user'];?/strong,恭喜您登錄成功!/p
p您這是第span?php echo $_SESSION['login_counts'];?/span次登錄本站。/p
p上次登陸本站的時(shí)間是:span?php echo date('Y-m-d H:i:s',$_SESSION['login_time']);?/span/ppa href='#' id='logout'【退出】/a/p
/div
?php }else{?
div id="login_form"
plabel用戶名:/label input type="text" class="input" name="user" id="user" //p
plabel密 碼:/label input type="password" class="input" name="pass" id="pass" //p
div class="sub"
input type="submit" class="btn" value="登 錄" /
/div
/div
?php }?/div
注意在index.php文件頭應(yīng)該加上語句:session_start; 同時(shí)在head部分引入jquery庫,以及包含global.js,您還可以為登錄框?qū)憘€(gè)漂亮的CSS樣式,當(dāng)然本例已經(jīng)略微寫了個(gè)簡單的樣式,請查看源碼。
script type="text/javascript" src="js/jquery.js"/scriptscript type="text/javascript" src="js/global.js"/script
global.js
global.js文件包括了將要實(shí)現(xiàn)的jquery代碼。首先要做的就是讓輸入框獲得焦點(diǎn),像百度和google那樣一打開,鼠標(biāo)光標(biāo)就在輸入框內(nèi)。使用代碼如下:
$(function(){
$("#user").focus();
});
接著要做的就是,當(dāng)輸入框獲得和失去焦點(diǎn)時(shí),分別呈現(xiàn)不同的樣式,比如本例中使用不同的邊框顏色,代碼如下:
$("input:text,textarea,input:password").focus(function() {
$(this).addClass("cur_select");
});
$("input:text,textarea,input:password").blur(function() {
$(this).removeClass("cur_select");
});
用戶登錄:用戶點(diǎn)擊登錄按鈕后,首先要驗(yàn)證用戶的輸入不能為空,然后向后臺(tái)login.php發(fā)送一個(gè)Ajax請求。當(dāng)后臺(tái)驗(yàn)證登錄成功后,返回登錄用戶信息:如用戶登錄次數(shù)和上次登錄時(shí)間等;如果登錄失敗,則返回登錄失敗信息。
$(".btn").live('click',function(){ var user = $("#user").val(); var pass = $("#pass").val(); if(user==""){
$('div id="msg" /').html("用戶名不能為空!").appendTo('.sub').fadeOut(2000);
$("#user").focus(); return false;
} if(pass==""){
$('div id="msg" /').html("密碼不能為空!").appendTo('.sub').fadeOut(2000);
$("#pass").focus(); return false;
}
$.ajax({ type: "POST", url: "login.php?action=login", dataType: "json", data: {"user":user,"pass":pass}, beforeSend: function(){
$('div id="msg" /').addClass("loading").html("正在登錄...").css("color","#999")
.appendTo('.sub');
}, success: function(json){ if(json.success==1){
$("#login_form").remove(); var div = "div id='result'pstrong"+json.user+"/strong,恭喜您登錄成功!/p
p您這是第span"+json.login_counts+"/span次登錄本站。/p
p上次登錄本站的時(shí)間是:span"+json.login_time+"/span/pp
a href='#' id='logout'【退出】/a/p/div";
$("#login").append(div);
}else{
$("#msg").remove();
$('div id="errmsg" /').html(json.msg).css("color","#999").appendTo('.sub')
.fadeOut(2000); return false;
}
}
});
});
我在進(jìn)行Ajax請求時(shí),數(shù)據(jù)傳輸格式使用的是json,返回的數(shù)據(jù)也是json數(shù)據(jù),使用JS將json數(shù)據(jù)解析,得到登錄后的用戶信息,然后通過append追加到#login元素下,完成登錄操作。
用戶退出:當(dāng)點(diǎn)擊“退出”時(shí),向login.php發(fā)送一個(gè)Ajax請求,后臺(tái)注銷所有Session,頁面重新回到登錄界面。
$("#logout").live('click',function(){
$.post("login.php?action=logout",function(msg){ if(msg==1){
$("#result").remove(); var div = "div id='login_form'plabel用戶名:/label
input type='text' class='input' name='user' id='user' //p
plabel密 碼:/label input type='password' class='input' name='pass'
id='pass' //p
div class='sub'input type='submit' class='btn' value='登 錄' //div
/div";
$("#login").append(div);
}
});
});
login.php
根據(jù)前臺(tái)提交的請求,登錄時(shí),獲取用戶輸入的用戶名和密碼,并與數(shù)據(jù)庫中對(duì)應(yīng)的用戶名和密碼進(jìn)行比對(duì),如果比對(duì)成功,則將新的更新該用戶登錄信息,并組裝json數(shù)據(jù)傳給前臺(tái)。
session_start();require_once ('connect.php');
$action = $_GET['action'];if ($action == 'login') { ?//登錄
$user = stripslashes(trim($_POST['user']));
$pass = stripslashes(trim($_POST['pass'])); if (empty ($user)) { echo '用戶名不能為空'; exit;
} if (empty ($pass)) { echo '密碼不能為空'; exit;
}
$md5pass = md5($pass); //密碼使用md5加密
$query = mysql_query("select * from user where username='$user'");
$us = is_array($row = mysql_fetch_array($query));
$ps = $us ? $md5pass == $row['password'] : FALSE; if ($ps) {
$counts = $row['login_counts'] + 1;
$_SESSION['user'] = $row['username'];
$_SESSION['login_time'] = $row['login_time'];
$_SESSION['login_counts'] = $counts;
$ip = get_client_ip(); //獲取登錄IP
$logintime = mktime();
$rs = mysql_query("update user set login_time='$logintime',login_ip='$ip',
login_counts='$counts'"); if ($rs) {
$arr['success'] = 1;
$arr['msg'] = '登錄成功!';
$arr['user'] = $_SESSION['user'];
$arr['login_time'] = date('Y-m-d H:i:s',$_SESSION['login_time']);
$arr['login_counts'] = $_SESSION['login_counts'];
} else {
$arr['success'] = 0;
$arr['msg'] = '登錄失敗';
}
} else {
$arr['success'] = 0;
$arr['msg'] = '用戶名或密碼錯(cuò)誤!';
} echo json_encode($arr); //輸出json數(shù)據(jù)}elseif ($action == 'logout') { ?//退出
unset($_SESSION);
session_destroy(); echo '1';
}
當(dāng)前臺(tái)請求退出時(shí),只需注銷session就可以,并返回1給前臺(tái)JS處理。
幫你調(diào)試了一下你的代碼,發(fā)post請求,,數(shù)據(jù)的格式是:'name=zhangsanage=18' ,這種字符串格式的,所以你要把你的?var senddata="4"; 改成?var senddata="senddata=4";
php 部分,
$getDeviceID=$_POST[senddata];
改成$getDeviceID=$_POST['senddata'];
接收的參數(shù)需要加上單引號(hào)。
另外如果是jquery就比較簡單了,去jquery官網(wǎng)下載jq3.3.1然后引入
php部分
?php
echo?json_encode($_POST,320);
?
html部分
html
head
script?src="jquery-3.3.1.min.js"/script
/head
body
script
function?freshdata(){
$.ajax({
url:?"test.php",//提交地址
type:?"post",//提交方式
dataType:'json',
data:{
'senddata':4,
//如果在加其他參數(shù)
'name':'張三',
'age':20,
},
success:?function(ret)?{//msg?返回值
alert('senddata:'+ret.senddata+'\n姓名:'+ret.name+'\n年齡:'+ret.age);
}
});
}
/script
span?onclick="freshdata()"點(diǎn)擊發(fā)送ajax請求/span
/body
/html
效果圖
如果語句寫:
http.send "T1=XXXT2=XXXXXT3=XXXXXX"
那么PHP收到的T1值就是XXX,如果XXX是VBA的變量,那么語句應(yīng)該這么寫:
http.send "T1=" XXX "T2=XXXXXT3=XXXXXX"
注意符號(hào),原則我們send后面的內(nèi)容,必須是符合POST的格式,可以把數(shù)據(jù)放入變量里面,調(diào)試一下,例如:
data = "T1=" XXX "T2=XXXXXT3=XXXXXX"
debug.print data
http.send data
另外,PHP端如果沒有通過測試,也需要print_r($_POST)監(jiān)控,看看參數(shù)提交是否合適。
form表單demo:task.html
fieldset id="setFiled"
legend發(fā)布任務(wù)/legend
form action="registr.php" method="post" id="steForm"
label任務(wù)類型:/labelbr
input type="text" name="type"? id="taskType" placeholder="請選擇任務(wù)類型"/br
label酬nbsp;nbsp;金:/labelbr
input type="number" name="money" id="forMoney" min="1" max="1000"/label元/labelbr
label截止時(shí)間:/labelbr
input type="datetime" name="time" id="timeSubmit"/span data-year="" data-month="" data-date="" id="showDate"/spanbr
label詳細(xì)描述:/labelbr
textarea maxlength="512" name="textAray" id="msgArea"/textareabr
input type="submit" name="subMit" id="forSub" value="點(diǎn)擊發(fā)布" /
/form
擴(kuò)展資料
php接收POST數(shù)據(jù)的三種方式
1、$_POST 方式接受數(shù)據(jù)
$_POST 方式是由通過HTTP的POST方法傳遞過來的數(shù)據(jù)組成的數(shù)組,是一個(gè)自動(dòng)全局變量。
注:只能接收Content-Type:application/x-www-form-urlencode提交的數(shù)據(jù)。也就是只能接收表單過來的數(shù)據(jù)。
2、GLOBLES[‘HTTP_RAW_POST_DATA’]
如果訪問原始POST數(shù)據(jù)不是php能夠識(shí)別的文檔類型,比如:text/xml 或者soap等等,可以用$GLOBLES[‘HTTP_RAW_POST_DATA’]來接收,$HTTP_RAW_POST_DATA變量包含有原始POST數(shù)據(jù)。此變量僅在碰到未識(shí)別的MIME數(shù)據(jù)時(shí)產(chǎn)生。
注:$HTTP_RAW_POST_DATA對(duì)于enctype=”multipart/form-data”表單數(shù)據(jù)不可用,也就是說使用$HTTP_RAW_POST_DATA無法接受網(wǎng)頁表單post過來的數(shù)據(jù)。
3、file_get_contents(“php://input”);
如果訪問原始POST數(shù)據(jù),更好的方法是使用file_get_content(“php://input”);對(duì)于未指定Content-Type的POST數(shù)據(jù),可以使用該方法讀取POST原始數(shù)據(jù),包括二進(jìn)制流也可以和$HTTP_RAW_POST_DATA比起來。它帶來的生存眼里更小,并且不需要任何特殊的php.ini設(shè)置。
注:php://input不能用于 enctype=”multipart/form-data”
例如:$postStr = file_get_contents("php://input"); //獲取POST數(shù)據(jù)
socket或者CSocket類..連接http服務(wù)器..直接send過去就好了,可以使用HttpWatch Professional抓取post數(shù)據(jù)格式.
一般格式大概是像下面這樣的..具體代碼就自己寫了..
Post / HTTP/1.1
Host: 127.0.0.1
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh,en-US;q=0.8,en;q=0.6,zh-CN;q=0.4
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
將數(shù)據(jù)轉(zhuǎn)換成 json 格式的字符串, 并通過 CURL 的 POST 的形式傳遞參數(shù)給服務(wù)端, 但是在服務(wù)端無法用 $_POST 獲取到數(shù)據(jù)。后臺(tái)用 $_POST 獲取到的信息為空, 但是可以通過 $post = file_get_contents("php://input") 獲取到請求的相關(guān)信息。
Coentent-Type 的值為 application/x-www-data-urlencode 和 multipart/form-data 時(shí), php才會(huì)將http請求數(shù)據(jù)包中的數(shù)據(jù)填進(jìn) $_POST 。
如果 POST 的原始數(shù)據(jù)是一維數(shù)組或拼接的標(biāo)準(zhǔn)格式的鍵值對(duì)字符串,那么可以用 $_POST 來獲取。
如果要通過 file_get_contents 獲取,這種情況下可以發(fā)送 json 字符串,用 json_encode 編碼轉(zhuǎn)換一下,或者使用 http_build_query 。
1、 區(qū)別 PHP 的 $_POST、$HTTP_RAW_POST_DATA 和 php://input
2、 accept 和 content-Type區(qū)別
3、 Http Header里的Content-Type
文章標(biāo)題:post發(fā)數(shù)據(jù)給php post提交數(shù)據(jù)
URL分享:http://m.rwnh.cn/article24/hiipce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站、建站公司、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)