看了你的問題,我有點暈,本來是很困的,現(xiàn)在更困了。
創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為獨山子等服務(wù)建站,獨山子等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為獨山子企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
我覺得,你這不就是一個正常的網(wǎng)站嗎?也沒什么值需要傳吶?
你的登錄頁面向admin.php傳值這個簡單,直接用form表單就可以搞定了;
驗證的頁面完全可以和dir.php合并嘛,登錄的話都是用session或cookie完成的,反正你的每個頁面都必須要做這一步,直接合并就OK
另外你的dir.php就是一個正常了網(wǎng)頁了,也就是用戶需要瀏覽的頁面對吧?那你點了對應(yīng)的鏈接就鏈接不同的頁面,這個不是太簡單了嗎?不同的頁面去取不同的數(shù)據(jù)表,神馬大型的網(wǎng)站都是這么干的呀!
另外,要和你說的是,安全不安全不是列出了什么,重要的是你列出來的東西不要包含你的字段名,這才是影響安全的重要因素,你可以通過PHP把它轉(zhuǎn)換吶,PHP不就是做這個轉(zhuǎn)換的嗎?PHP的功能是神馬?就是做這個的呀。
另外,如果你是動態(tài)頁面,使用鏈接跳轉(zhuǎn)頁面,就必須用?+信息的方式,當然,我說的是初學,如果你學得深入了,可以用偽靜態(tài),更可以用純靜態(tài),這個先不說,先把頁面間通過get傳值弄通,你就學會PHP了,也就是說,你正式進入了PHP的大門。
不行了,熬不住了,睡覺去了.............
使用以下代碼可以更改設(shè)置。
后端代碼
push.php
?php
use?Workerman\Worker;
require_once?'./Workerman/Autoloader.php';
$worker?=?new?Worker('websocket://0.0.0.0:1234');
//?這里進程數(shù)必須設(shè)置為1
$worker-count?=?1;
//?worker進程啟動后建立一個內(nèi)部通訊端口
$worker-onWorkerStart?=?function($worker)
{
//?開啟一個內(nèi)部端口,方便內(nèi)部系統(tǒng)推送數(shù)據(jù),Text協(xié)議格式?文本+換行符????$inner_text_worker?=?new?Worker('Text://0.0.0.0:5678');
$inner_text_worker-onMessage?=?function($connection,?$buffer)
{
global?$worker;
//?$data數(shù)組格式,里面有uid,表示向那個uid的頁面推送數(shù)據(jù)
$data?=?json_decode($buffer,?true);
$uid?=?$data['uid'];
//?通過workerman,向uid的頁面推送數(shù)據(jù)
$ret?=?sendMessageByUid($uid,?$buffer);
//?返回推送結(jié)果
$connection-send($ret???'ok'?:?'fail');
};
$inner_text_worker-listen();
};
//?新增加一個屬性,用來保存uid到connection的映射
$worker-uidConnections?=?array();
//?當有客戶端發(fā)來消息時執(zhí)行的回調(diào)函數(shù)$worker-onMessage?=?function($connection,?$data)use($worker)
{
//?判斷當前客戶端是否已經(jīng)驗證,既是否設(shè)置了uid
if(!isset($connection-uid))
{
//?沒驗證的話把第一個包當做uid(這里為了方便演示,沒做真正的驗證)
$connection-uid?=?$data;
/*?保存uid到connection的映射,這樣可以方便的通過uid查找connection,
*?實現(xiàn)針對特定uid推送數(shù)據(jù)
*/
$worker-uidConnections[$connection-uid]?=?$connection;
return;
}
};
//?當有客戶端連接斷開時
$worker-onClose?=?function($connection)use($worker)
{
global?$worker;
if(isset($connection-uid))
{
//?連接斷開時刪除映射
unset($worker-uidConnections[$connection-uid]);
}
};
//?向所有驗證的用戶推送數(shù)據(jù)
function?broadcast($message)
{
global?$worker;
foreach($worker-uidConnections?as?$connection)
{
$connection-send($message);
}
}
//?針對uid推送數(shù)據(jù)
function?sendMessageByUid($uid,?$message)
{
global?$worker;
if(isset($worker-uidConnections[$uid]))
{
$connection?=?$worker-uidConnections[$uid];
$connection-send($message);
return?true;
}
return?false;
}
//?運行所有的worker(其實當前只定義了一個)
Worker::runAll();
啟動后端服務(wù)
php?push.php?start?-d
前端接收推送的js代碼
var?ws?=?new?WebSocket('ws://127.0.0.1:1234');
ws.onopen?=?function(){
var?uid?=?'uid1';
ws.send(uid);
};
ws.onmessage?=?function(e){
alert(e.data);
};后端推送消息的代碼
//?建立socket連接到內(nèi)部推送端口
$client?=?stream_socket_client('tcp://127.0.0.1:5678',?$errno,?$errmsg,?1,??STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT);
//?推送的數(shù)據(jù),包含uid字段,表示是給這個uid推送
$data?=?array('uid'='uid1',?'percent'='88%');
//?發(fā)送數(shù)據(jù),注意5678端口是Text協(xié)議的端口,Text協(xié)議需要在數(shù)據(jù)末尾加上換行符
fwrite($client,?json_encode($data)."\n");
//?讀取推送結(jié)果
echo?fread($client,?8192);這里的uid不一定是用戶的id,也可以理解為任務(wù)id即 taskid
app可以直接發(fā)送http請求給服務(wù)器,然后php程序處理完之后,輸出數(shù)據(jù)到一個頁面,app獲得這個頁面就可以解析里面的數(shù)據(jù)。關(guān)于這個頁面數(shù)據(jù)交換格式有很多成熟的方式,比如 xml,json。
參考:
問題真多啊,總結(jié)一下,你就是想知道,在本搭寫好的 php 程序與數(shù)據(jù)怎么弄到線上服務(wù)器上。兩邊環(huán)境不一樣有沒有關(guān)系。還有php安全問題。
發(fā)布php網(wǎng)站問題:
php 程序只需要用 FTP 之類的工具,上傳到服務(wù)器的 www 目錄下即可,這一步并沒什么特別的。數(shù)據(jù)問題,使用任意一種數(shù)據(jù)庫管理程序,將數(shù)據(jù)從本地導出以后,再用相同的方式,導入線上服務(wù)器的數(shù)據(jù)庫中即可。比如 phpmyadmin 在線導入導出工具,當然,服務(wù)器上你也得傳一份 phpmyadmin 才行。php 程序連接數(shù)據(jù)庫的配置部份當然得改一下。如果你本地數(shù)據(jù)庫的用戶名密碼與服務(wù)器上的相同,那就不用改了。
關(guān)于環(huán)境版本問題:
近幾年的 php 版本變化比較大,有些語法特點是新版才能使用的,有些舊版函數(shù)被廢棄。只要你不急著使用太新的語法,也不要使用手冊中聲明棄用的函數(shù)。一般沒什么問題。數(shù)據(jù)庫方面的區(qū)別不太大,基本上沒什么不兼容的。
安全問題:
這個說來話長了,矛與盾的問題。沒有絕對的矛和盾。對于一些常見的,已知的問題,做好處理就可以了。剩下的安全問題,更多是你程序設(shè)計時有沒有漏洞罷了。
這需要用ajax來實現(xiàn)
index.php
html
titlephp+jquery+ajax+json簡單小例子/title
?php
header("Content-Type:text/html;charset=utf-8");
?
head
script?type="text/javascript"?src="
script?type="text/javascript"
$(function()?{
$("#subbtn").click(function()?{
var?params?=?$("input").serialize();
var?url?=?"1.php";
$.ajax({
type:?"post",
url:?url,
dataType:?"json",
data:?params,
success:?function(msg){
var?backdata?=?"您提交的姓名為:"?+?msg.name?+
"br?/?您提交的密碼為:"?+?msg.password;
$("#backdata").html(backdata);
$("#backdata").css({color:?"green"});
}
});
});
});
/script
/head
body
plabel?for="name"姓名:/label
input?id="name"?name="name"?type="text"?/
/p
plabel?for="password"密碼:/label
input?id="password"?name="password"?type="password"?/
/p
span?id="backdata"/span
pinput?id="subbtn"?type="button"?value="提交數(shù)據(jù)"?//p
/body
/html
1.php代碼:
?php
//接收數(shù)據(jù)-處理數(shù)據(jù)-返回數(shù)據(jù)
echo?json_encode($_POST);
?
這個很簡單了,php 這邊寫一個接口,然后android的那邊訪問這個接口就可以了,接口返回值用json封裝,然后android那邊把json提取出來就可以了
技術(shù)支持:論文第9區(qū),專業(yè)的網(wǎng)站做專業(yè)的事