<p class="listintro"><span id="sp"></span>プログラミング|チャットルーム</p> <p style="width:340px;height:285px;float:left;"> 1 ページログインの基本要素 <br> ログインフォームは My Bamboo Leaf でご覧いただけます <br> (1) ログインフォーム <br><form method=POST name=chatform action=chat/login .php ?action=enter onSubmit="b1_submit();return true;" target="howtodo"><br>(a) チャット フォームの名前は、チャット ルームへの入り口として使用します。そのようなパラメータがない場合、ログイン ページが表示されます <br>(b) フォームを送信するとき、最初に b1_submit() を呼び出してチャット ウィンドウを作成します <br>(c) チャットのターゲット ウィンドウは、b1_submit() によって作成された howtodo ウィンドウです <br> <br>(2) フォーム項目 <br>ニックネーム:<input type=text name=name size=15 maxlength="10"><br>Password:<input type=password name=pass size=15 maxlength="10"> <br><input type=submit name =submit value=Login style="width:100"><br><input type=reset name=reset value=Readd style="width:50"><br>(a) 各フォームitem には、許容される最大長 maxlength を設定する必要があります<br><br>(3) チャット ウィンドウを作成するには js<br><script LANGUAGE="javascript"><br>function b1_submit(){<br>chat=window.open('',"howtodo", 'Status=no,scrollbars= no,resizable=no');<br>chat.moveTo(0,0);<br>chat.resizeTo(screen.availWidth,screen.availHeight);<br>chat.outerWidth=screen.availWidth;<br>chat .outerHeight=screen.availHeight; <br>}<br> このコードは、まずステータス バー、スクロール バー、サイズ変更可能なハウツー ウィンドウを開き、それを画面の左上隅に移動して、許可される画面サイズにズームインします。 <br><br> チャット ルームのプログラミングのアイデア - ゲート - パス <br><br> ドア - パス<br> チャット ルームは完全に無料で運営でき、パスワードは不要で、チャット ステータスも必要ありません。利点: 自由、観光客に最適! もう 1 つの方法はチャット ルームに登録することです。チャット ルームに入るには自分のユーザー名とパスワードを入力する必要があります。利点: 個性が完全に反映され、古い友人に最適です。私のチャット ルームは登録方法を使用します。 1. 最初に登録してからチャットに参加し、2. 自動的に登録してから自分の情報を変更します。 2番目の方法!! 新しいチャット友達のユーザー名が自動的にデータベースに保存され、次回ログインする際に正しいパスワードを入力する必要があります <br><br> 以下はテキストデータベースを使用します! ! <br><br>//$useronline はオンラインユーザーのデータファイルの名前です<br>// $useronlinelock はオンラインユーザーのロックサインです<br>//$register は登録されたデータファイルの名前です<br>//$registerlock はロックです登録されたファイルの符号<br>//$splitは区切り文字です<br><br>//ログインパラメータenter<br>if($ action == "enter")<br>{<br>//現在時刻(秒)<br>$timecurrent = date("U" );<br><br>//同じファイルが同時に変更されないようにオンライン番号ファイルをロックします<br>while( file_exists($useronlinelock) )<br>{<br>if(!file_exists($useronlinelock))<br>{<br>break;<br> }<br>}<br><br>//一時ファイルを作成します<br>fclose(fopen($useronlinelock,"w"));<br><br>//オンラインでユーザーと登録ユーザーの情報を読み取ります: パスワード、ニックネーム、更新時刻<br>$useronline = file($useronline );<br>$register = file($register);<br><br>//ログインが成功したかどうかを判断するためのサイン<br>$namesign= 0;<br><br>//ユーザー名とパスワードのエラーを判断します。空白または 10 文字を超えるパスワードは 20 文字を超えることはできません<br>if(($name =="") || (strlen ($name) > 10) || (strlen($pass) > 20) )<br>{<br>print("ニックネームもパスワードも長すぎます");<br>//ログイン失敗<br>$namesign=1;<br>//一時ファイルを削除<br>unlink($useronlinelock);<br>} <br>else<br>{<br>//誰かがすでに登録していないか、パスワードが間違っていないか確認してください<br>$foundsign=0;<br>for($i=0;$i<count($register); $i++)<br/>{<br/>//Split<br/>$tempregister = split($ split,$register[$i],99);<br/>//登録されているユーザー名を検索<br/>if( $name == $tempregister[0] ) <br/>{<br/>//サインが見つかりました<br/>$foundsign=1;<br/> //パスワードは正しいですか?<br/>if($pass != $tempregister[1])<br/>print("パスワードが間違っています!");<br/>//ログインに失敗しました<br/> $namesign=1;<br/>unlink($useronlinelock); <br/>break;<br/>}<br/>else<br/>{<br/>//古いユーザーが正常にログインしました<br/>$namesign=0;<br/>break;<br/>}<br/>}<br/><br/>}<br/><br/>//このユーザー名が見つからない場合は、自動的に登録します<br/>if(! $foundsign)<br/>{<br/>//ユーザー名とパスワードを保存します<br/>$handle = fopen($register,"a");<br/>fputs($handle,"$name$split $pass$split ");<br/>fclose($handle );<br/>//新しいユーザーのログインに成功しました<br/>$namesign=0;<br/>}<br/>}<br/>}<br/>if(!$namesign)<br/>{ <br/>//オンラインユーザーのリストを更新します<br/>$useronlinehandle = fopen($useronline,"w ");<br/><br/>//すでに内部にあるかどうかを判断するには、ページを更新してください<br/>$updasign = 0;<br/>for($i=0;$i<count($useronline); $i++)<br/>{<br/>$usertemp =split($split,chop($useronline[$i]),99);<br/>if($name == $usertemp[0])<br/>{<br/>//フラグを更新<br/>$updasign = 1;<br/>fputs($useronlinehandle,$useronline[$i]);<br/>}<br/>else<br/>{<br/>fputs($useronlinehandle,$useronline[$i]);<br/>}<br/>}<br/>// 存在しない場合は追加しますit<br/> if(!$updasign)<br/>fputs($useronlinehandle,"$name$split$level$split$pass$split$timecurrent ");<br/>fclose($useronlinehandle);<br/><br/>//略語を削除<br/>unlink($ useronlinelock) ;<br/><br/>//ログイン成功<br/>}<br/><br/>この時点で、ユーザー認証は完了しており、チャット友達はニックネームとパスワードを持って合法的にチャット ルームに入っています<br/><br/><br/>チャット ルーム プログラミングのアイデア - ロビー--ディスプレイ インターフェース<br/><br/><br/>ロビー--ディスプレイ インターフェース<br/>2000 年 9 月 4 日<br/>基本的にすべての www チャット ルームはフレーム メソッドを使用しています。好きなものを表示するにはフレームまたは iframe を使用できます。私の場合は従来のフレーム メソッドを使用しています<br/><br/>。 print(" <frameset rows="*,110,0,0,0" border=0> ");<br>print("<framesetcols="660,118" rows="*"> ");<br><br> //チャットコンテンツの表示を担当するメインディスプレイ画面<br>print("<frame name=u src=about:blank Frameborder="NO" noresize> ");<br><br>//オンライン番号画面<br>print("<frame name=r src ="about:blank" Frameborder="NO">");<br>print("</frameset> ");<br><br>//情報送信画面、情報指令センター、全ての指示が必要ここから発行<br>print ("<frame name=d src=send.php?name=$name&&pass=$passscrolling='no' Frameborder="NO" noresize> ");<br><br>//受動的に画面を更新する送信された情報を処理します<br>print ("<frame src="about:blank" name="bl"> ");<br><br>/自分と他のチャット友達との間のチャット情報を表示するために画面を積極的に更新します<br>print(" <frame src="about:blank" name="flush"> ");<br><br>//オンラインかどうかを検出し、クラッシュや切断などの異常な離脱を処理する画面。 <br>print( "<frame src="about:blank" name= "check"> 空白の場合、他のページの表示は、最初にそのページに呼び出しを送信して開始する必要があります。 <br/><br/><br/>チャット ルーム プログラミングのアイデア -- ロビー -- 数オンラインの人数<br/><br/>ロビー--オンラインの人数<br/><br/> NetEase チャット ルームのオンラインの人数に基づいたメソッドを使用し、現在のオンラインの人数を表示します。コードの説明は次のとおりです: <br/><br/>1 配列を作成します。ログイン時にオンラインのユーザーのリストを本文の後ろに置きます <br/><br/><?<br/>//オンライン番号ファイルをロックします<br/>while(file_exists($useronlinelock)){$ pppp++;}<br/>fclose(fopen($useronlinelock," w"));<br/><br/>//オンラインユーザーのリストを読み取る <br/>$useronline = file($useronline);<br/>unlink($useronlinelock);<br/><br/>//配列リストを作成する <br/>print("document.writeln("list =new Array(");<br/>$k=count($useronline);<br/>if($k>1)<br/>{<br/>for($i=0;$i<($ k-1);$i++)<br/>{ <br/>$usercurrent = split($split,$useronline[$i],99);<br/>// Name+,<br/>print("'$usercurrent[0]',"); <br/>}<br/>$i=$k-1; <br/>// 姓を処理します<br/>$usercurrent = split($split,$useronline[$i],99);<br/>print("'$usercurrent[0]'") ;<br/>}<br/>// 配列の終わり<br/>print (")"); ");<br/>?><br><br>2 オンラインの人数を表示する js<br>document.writeln('[オンラインの人数<font color=red>'+count+ '</font> ]<br>');<br>document.writeln("[<a href="javascript:parent.cs('Everyone')">Everyone</a>]< ;br>");<br>ドキュメント。 writeln("<font class='p9'>");<br>var j,name,club;<br>for(var i=0;i<list.length></list.length>{<br>if(list [i]!=null){<br><br>//オンライン全員の名前を表示します<br>document.writeln("<a href="javascript:parent.cs('"+list [i]+"')" title= '"+list[i]+"'>"+list[i]+"</a><br>");<br>}<br>}<br>this.r .document.writeln('</font> ;<hr>');<br><br><br>3チャット オブジェクトを変更する<br>function cs(name)<br>{<br>if(this.d.document==null)return;<br>if( name=='Everyone')<br>{<br>this .d.add('Everyone');<br>this.d.document.inputform.talkto.value='Everyone';<br><br>//フォーカスを変更<br>this.d.document.inputform.msg.focus();<br>return ;<br>}<br>for(var i=0;i<list.length></list.length>{<br>if(list[i]==name) <br>{<br><br>//送信されたトークを <br>this.d に変更します.document.inputform.talkto.value=list[i];<br>this.d.document.inputform.msg.focus();<br>return;<br>}<br> }<br><br>//Error<br>alert('このユーザーはオフラインです、またはニックネームを変えました。 ');<br>}<br><br>4ユーザーを削除する<br>function del(str)<br>{<br>for(var i=0;i<list.length></list.length>if(list[i]==str) <br> {<br>リストを削除[i];<br>count--;<br>}<br>}<br><br><br>5ユーザーを追加<br>function add(str1,str2)<br>{<br>var l=list.length;<br>for(var i=0;i<list.length;i=i+1)<br/><br/>//すでに配列内にある場合は、return <br/>if(list[i]==str1) )<br/> return;<br/><br/>//ユーザーを追加<br/>list[l]=str1;<br/>count++;<br/>}<br/><br/>6 チャット人数を更新するメソッド、タイマーの使用<br/>var timerID=null;<br/>var timerRunning=false ;<br/><br/>function stop()<br/>{<br/>//Stop<br/>if(timerRunning)clearTimeout(timerID);<br/>timerRunning=false;<br/>}<br/>function start()<br/>{<br/>stop();<br/>//更新するプログラムを呼び出すオンラインの人数<br/>write1( );<br/>}<br/><br/>function write1()<br/>{<br/>... ... ... ...<br/>//更新時間を設定,<br/>timerID=setTimeout("start()" ,30000);<br/>timerRunning= true;<br/>}<br/><br/><br/>この方法は比較的簡単にオンライン人数を表示できます。もちろん、オンライン人物ファイルを読み取る方法を使用してオンライン人数を表示することもできます。しかし、チャット オブジェクトを変更するのはさらに面倒です。<br/><br/><br/>チャット ルーム プログラミングの考え方 -- コマンド センター -- メッセージの送信<br/><br/> コマンド センター -- メッセージの送信<br/>これはチャット ルームのコマンド センターです。すべての指示は次のとおりです。ここで発行されます<br/><br/>1以下は基本的な送信フォームのコードです<br/><br/><form name=inputform action='messagesend.php' target='bl' ><br>< <br/>//最大メッセージ数を読み取ります<br/>$message = file($filename);<br/>$number = Chop($message[0 ]);<br/><br/>//最後に表示された次のスピーチから最大のスピーチの終わりまで、スピーチの内容を表示します<br/>for($i=$last +1;$i<=$number;$i++)<br/>{<br/>// 次のスピーチの内容を読む<br/>$filename = "messageonline".($i%10).".php";<br/>$message = file($ filename);<br/>$tempmessage = split($split,$message[0] ,99);<br/><br/>//発言内容を表示<br/>print("parent.u.document.writeln("$message[0]"); ");<br/>}<br/><br/>//送信フォームの最後の発言番号を更新<br/> print("parent.d.document.inputform.last.value=$number; ");<br/><br/>//メインプログラムに通知この更新が完了したことを示します<br/>print("parent.flushflag=true; ");<br/>?> <br></script><br><br><br>このようにして、送信された各ステートメントはパッシブ更新プログラムによって処理され、ファイルを更新すると、周期的なアクティブ更新プログラムが表示タスクを完了します。 <br> <br> <br> </p> <center> </center> <p style="width:100%;text-align:center;margin:10px 0"></p>