使用Ajax+MYSQL+PHP實現(xiàn)留言墻

屬于簡易版恐疲,比較適合沒有后臺基礎(chǔ)的初學(xué)者入門袭祟,使用Ajax響應(yīng)php對mysql數(shù)據(jù)庫進(jìn)行操作淮椰,將網(wǎng)站搭建在xampp中横缔,開啟Apache服務(wù)器利用公網(wǎng)ip進(jìn)行對網(wǎng)頁的訪問


登錄界面

T-main.html文件

HTML

<div id="T-main-box">

<form id="login" action="" method="post">

<div id="T-main-login">

<div class="T-main-login-inp">

<h2>用戶名</h2>

<input type="text" name="username" id="username">

<p id="spanName"></p>

</div>

<div class="T-main-login-inp">

<h2>密碼</h2>

<input type="Password" name="userpassword" id="userpassword">

</div>

<p id="hint"></p>

<div class="T-main-login-inp">

input class="T-main-but" type="button" onclick="sign()"value="登 錄">

input class="T-main-but" type="button" onclick="register()" value="注 冊">

</div>

</div>

</from>

JS

function sign(){

var lg=document.getElementById('login');

var name=document.getElementById('username');

var password=document.getElementById('userpassword');

if(name.value!=""&&password.value!=""){

lg.action='sign.php';

lg.submit();}

else{document.getElementById('hint').innerHTML="用戶名或密碼不能為空!";}

};

function register(){

window.location="register.html";

}

CSS

html body div span applet object iframe h1 h2 p a{margin:0px;padding:0px;}

body {

background: url(img/sakura.jpg)no-repeat center 0px;

background-attachment: fixed;

background-size: cover;

}

#T-main-box{

width: 100%;

/*color:rgba();*/

}

#T-main-login{

font-family:"微軟雅黑" ;

padding: 2em;

width: 65%;

margin: 3.5em auto;

/*height: 100px;*/

background-color: rgba(0,3,6,0.4);

font-family: "arial";

color: #ffc;

}

.T-main-login-inp{

/*width: 100%;*/

/*margin: 2em;*/

margin-bottom:1em;

color: #ffc;

}

#spanName{

color: #f90;

}

#T-main-login input[type='text'],#T-main-login input[type='password']{

font-family: "微軟雅黑";

cursor: pointer;

font-size: 1.5em;

color: #fff;

width: 100%;

border:none;

outline: none;

border-bottom: 2px solid #999;

background-color: inherit;

}

.T-main-but{

-webkit-appearance:none;

/*display: block;*/

margin: auto;

margin-top:15px;

border:none;

width: 100%;

height:3.5em;

background-color: rgba(3,3,6,0.6);

color: #ccc;

font-size: 1em;

cursor: pointer;

}

.T-main-but:hover{

background-color: #fff;

color:#000;

}


登陸成功頁面

Tmainpage.html文件

HTML

<div id="Tpage">

<div id="top-fiexd">

<span class="item">

<img src="img/logo.png">

</span>

<span class="item"></span>

<span class="item" id="item3">

</span>

</div>

<div id="Tpage-top">

<div id="Mesbox">

<form id="Messageinput" action="message.php" method="POST">

<textarea id="Metext" name="Metext"></textare>

<input id="messinp" type="submit" onclick="message()" value="發(fā)表">

</form>

</div>

</div>

<div id="Tpage-main">

<div id="message">

</div>

</div>

dir id="Tpage-foot">

</dir>

</div>

JS

function getCookie(c_name)

{

if (document.cookie.length>0)

{

c_start=document.cookie.indexOf(c_name + "=")

if (c_start!=-1)

{

c_start=c_start + c_name.length+1

c_end=document.cookie.indexOf(";",c_start)

if (c_end==-1) c_end=document.cookie.length

return unescape(document.cookie.substring(c_start,c_end))

}

}

return "";

}

var usersname=getCookie('usersname');

document.getElementById('item3').innerHTML="welcome,"+usersname;

var xmlHttp

function message()

{

var str=document.getElementById("Metext");

if (str.length==0)

{

// document.getElementById("spanName").innerHTML=""

return

}

xmlHttp=GetXmlHttpObject()

if (xmlHttp==null)

{

alert ("Browser does not support HTTP Request")

return

}

var url="refresh.php"

url=url+"?uname="+retval

url=url+"&sid="+Math.random()

xmlHttp.onreadystatechange=stateChanged

xmlHttp.open("POST",url,true)

xmlHttp.send(null)

}

function stateChanged()

{

if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

{

document.getElementById("message").innerHTML=xmlHttp.responseText

}

}

function GetXmlHttpObject()

{

var xmlHttp=null;

try

{

// Firefox, Opera 8.0+, Safari

xmlHttp=new XMLHttpRequest();

}

catch (e)

{

// Internet Explorer

try

{

xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");

}

catch (e)

{

xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

}

}

return xmlHttp;

}

CSS

html,body,div,span,applet,object,iframe,h1,h2,p,a{outline: none;margin:0;padding:0;}

body{

}

#Tpage{

width:100%;

height:100%;

/*padding: 20px;*/

/*width: inherit;*/

/*background-color: rgba(200,230,100,0.8);*/

font-family: "微軟雅黑";

background: url(img/sakura.jpg) ;

background-size:100%;

background-attachment: fixed;

background-size: cover;

}

#Tpage #logo{

height: 3.5em;

width: 7em;

}

#top-fiexd{

position: fixed;

width: 100%;

height: 60px;

background-color: #633;

opacity: 0.9;

display: -webkit-flex;

}

.item{

height: inherit;;

}

#item3{

text-align: center;

line-height: 60px;

font-size: "微軟雅黑";

color: #fff;

}#Tpage-body{

text-align: center;

width: 100%;

/*background-color:#fff; */

}

#Tpage-top{

padding-top:100px;

width: 100%;

display: -webkit-flex;

text-align: center;

/*background-color: #ccc;*/

}

#Tpage-main{

width: 100%;

text-align: center;

/*background-color: #000;*/

padding-bottom:20px;

}

#Mesbox{

width: 80%;

margin: auto;

height: 200px;

flex: 1;

text-align: center;

}

#Metext{

border:none;

box-shadow:2px 2px 15px #933;

-moz-box-shadow:inset 0 0 15 #993;

-webkit-box-shadow:inset 2px 2px 15px #933;

outline: none;

font-family: "微軟雅黑";

border-radius: 10px;

padding: 10px;

resize:none;

display: block;

width: 80%;

height: 100px;

margin: auto;

background-color: #ccc;

opacity: 0.9;

font-size: 1.5em;

color: #333;

margin-bottom: 10px;

}

#messinp{

-webkit-appearance:none;

border-radius: 10px;

margin: auto;

border-radius: 10px;

padding: 10px;

width: 80%;

height: 40px;

background-color: #ccc;

opacity: 0.9;

margin: auto;

border:none;

font-size: 1em;

cursor: pointer;

letter-spacing:20px;

font-family: "微軟雅黑";

}

#messinp:hover{

background-color: #9cc;

color: #fff;

}

#message{

margin: auto;

width: 80%;

/*background-color: #deb887;*/

opacity: 0.8;

}

#message table{

text-align: center;

width:100%;

/*font-family: ?Arial, "微軟雅黑";*/

}

#message table td{

/*display: block;*/

/*height: 10em;*/

font-size: 1em;

word-break: break-all;

word-wrap: break-word;

}

#message tr:nth-child(odd) td{

border-radius: 10px;

background: #9c6;

color: #036;

}

#message tr:nth-child(even) td{

border-radius: 10px;

background: #ffc;

color: #c66;

}

#message sub{

display: block;

width: inherit;

}

sup{color:#933;}


sign.php文件-處理登錄

<?php

header("Content-type:text/html;charset=utf-8");

$uname=$_POST['username'];

$upassword=$_POST['userpassword'];

$con = mysql_connect("localhost:3306","root","sa123");

if (!$con)

{

die('Could not connect: ' . mysql_error());

}

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM user

WHERE uname='$uname' and upassword='$upassword'");

if($row = mysql_fetch_array($result))

{

setCookie("usersname","$uname",time()+2*7*24*3600);

//設(shè)置cookies

// echo $row['FirstName'] . " " . $row['LastName'];

// echo "
";

echo "";

}else{

echo "登錄失敗轴咱,該用戶不存在...請重新登錄";

}

?>

register.html文件

<div id="T-main-box">

<form id="login" action="" method="post">

<div id="T-main-login">

<div class="T-main-login-inp">

<h2>請輸入用戶名</h2>

<input type="text" name="username" id="username" onblur="showHint(this.value)">

<p id="spanName"></p>

</div>

div class="T-main-login-inp">

<h2>請輸入密碼</h2>

<input type="Password" name="userpassword" id="userpassword">

</div>

<div class="T-main-login-inp">

input class="T-main-but" type="button" onclick="register()" value="注 冊">

</div>

</div>

</form>

//Ajax

var xmlHttp

function showHint(str)

{

if (str.length==0)

{

document.getElementById("spanName").innerHTML=""

return

}

xmlHttp=GetXmlHttpObject()

if (xmlHttp==null)

{

alert ("Browser does not support HTTP Request")

return

}

var url="ajaxregister.php"

url=url+"?username="+str

url=url+"&sid="+Math.random()

xmlHttp.onreadystatechange=stateChanged

xmlHttp.open("GET",url,true)

xmlHttp.send(null)

}

function stateChanged()

{

if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

{

document.getElementById("spanName").innerHTML=xmlHttp.responseText

}

}

function GetXmlHttpObject()

{

var xmlHttp=null;

try

{

// Firefox, Opera 8.0+, Safari

xmlHttp=new XMLHttpRequest();

}

catch (e)

{

// Internet Explorer

try

{

xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");

}

catch (e)

{

xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

}

}

return xmlHttp;

}

function register(){

var lg=document.getElementById('login');

lg.action='register.php';

if(xmlHttp.responseText=="該用戶名可用"){

lg.submit();}

}


ajaxregister.php文件-檢測用戶輸入的用戶名是否已存在數(shù)據(jù)庫

<?php

error_reporting(E_ERROR);

ini_set("display_errors","Off");

// //屏蔽php警告

header("Content-type:text/html;charset=utf-8");

$uname=$_GET['username'];

$con = mysql_connect("localhost:3306","root","sa123");

if (!$con)

{

die('Could not connect: ' . mysql_error());

}

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM user

WHERE uname='$uname'");

// if(mysql_fetch_array($result))

// ? {

//$response="用戶名已存在";

// ? }else{

//$response="該用戶名可用";

// ? }

if($rows=mysql_num_rows($result))

{

$response="用戶名已存在";

}

else

{

$response="該用戶名可用";

}

echo $response;

?>

register.php文件-處理注冊信息

<?php

header("Content-type:text/html;charset=utf-8");

$uname=$_POST['username'];

$upassword=$_POST['userpassword'];

$con=mysql_connect("127.0.0.1:3306","root","sa123");

if (!$con) {

die('Could not connect: ' . mysql_error());

}

mysql_select_db("my_db", $con);

if(mysql_query("INSERT INTO user (uname, upassword)

VALUES ('$uname', '$upassword')")){

echo "注冊成功汛蝙!請重新登錄..";

// echo "111";

}

else{

echo "注冊失斄忆獭!再試一遍唄";

}

// while($row = mysql_fetch_array($result))

// {

// echo "

"; //排版代碼

// echo $row['uname'] . "
";

// echo ""; //排版代碼

// }

mysql_close($con);

?>

message.php文件-處理提交的留言信息

<?php

error_reporting(E_ERROR);

ini_set("display_errors","Off");

header("Content-type:text/html;charset=utf-8");

$Metext=$_POST['Metext'];

$uname=$_COOKIE['usersname'];

// echo "$uname";

// echo "$Metext";

date_default_timezone_set('Asia/Shanghai');//設(shè)置中國時間

$time=date('y-m-d H:i:s',time());//h表示12小時制,H表示24小時制

// echo "$time";

$con=mysql_connect("localhost:3306","root","sa123");

if (!$con) {

die('Could not connect: ' . mysql_error());

}

mysql_select_db("my_db", $con);

if(mysql_query("INSERT INTO metexts VALUES ('$uname', '$Metext','$time')")){

echo "";

// echo "111";

}

else{

echo "留言失斀呀!坚洽!";

}

?>


messagesuccess.php-提取留言信息頁面

<div id="Tpage">

<div id="top-fiexd">

<span class="item">

<img id="logo" src="img/logo.png">

</span>

<span class="item">

<span class="item" id="item3">

<?php echo "welcome,";echo$_COOKIE["usersname"];? ?>

</span>

</div>

<div id="Tpage-body">

<div id="Tpage-top">

<div id="Mesbox">

<form id="Messageinput" action="message.php" method="POST">

textarea id="Metext" name="Metext"></textarea>

</form>

</div>

</div>

<div id="Tpage-main">

<div id="message">

<span style="font-family:Comic Sans MS;font-size:14px;">

<table border="0" align="center" cellpadding="5" cellspacing="1" >

<?php

error_reporting(E_ERROR);

ini_set("display_errors","Off");

// //屏蔽php警告

header("Content-type:text/html;charset=utf-8");

$con=mysql_connect("localhost:3306","root","sa123");

if (!$con) {

die('Could not connect: ' . mysql_error());

}

mysql_select_db("my_db", $con);

$sql = "SELECT * FROM metexts order by mdate desc";

$query = mysql_query($sql);

while($row = mysql_fetch_array($query)){

?>

<tr bgcolor="#eff3ff">

<td><p>

<big>

<?= $row['message']?>

</big>

<sup>

<?=$row['uname']?>

</sup></p>

<sub>

<?= $row['mdate']?>

</sub>

</td>

</tr>

</table>

</span>

</div>

</div>

</div>

<dir id="Tpage-foot">

</dir>

</div>


2016.10.10


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市西土,隨后出現(xiàn)的幾起案子讶舰,更是在濱河造成了極大的恐慌,老刑警劉巖需了,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跳昼,死亡現(xiàn)場離奇詭異,居然都是意外死亡肋乍,警方通過查閱死者的電腦和手機(jī)鹅颊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墓造,“玉大人堪伍,你說我怎么就攤上這事∶倜觯” “怎么了帝雇?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蛉拙。 經(jīng)常有香客問我尸闸,道長,這世上最難降的妖魔是什么孕锄? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任吮廉,我火速辦了婚禮,結(jié)果婚禮上畸肆,老公的妹妹穿的比我還像新娘茧痕。我一直安慰自己,他們只是感情好恼除,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曼氛,像睡著了一般豁辉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舀患,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天徽级,我揣著相機(jī)與錄音,去河邊找鬼聊浅。 笑死餐抢,一個胖子當(dāng)著我的面吹牛现使,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旷痕,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼碳锈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了欺抗?” 一聲冷哼從身側(cè)響起售碳,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绞呈,沒想到半個月后贸人,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡佃声,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年艺智,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片圾亏。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡十拣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出召嘶,到底是詐尸還是另有隱情父晶,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布弄跌,位于F島的核電站甲喝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏铛只。R本人自食惡果不足惜埠胖,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淳玩。 院中可真熱鬧直撤,春花似錦、人聲如沸蜕着。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽承匣。三九已至蓖乘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間韧骗,已是汗流浹背嘉抒。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留袍暴,地道東北人些侍。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓隶症,卻偏偏與公主長得像,于是被迫代替她去往敵國和親岗宣。 傳聞我的和親對象是個殘疾皇子蚂会,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容