ホームページ  >  記事  >  バックエンド開発  >  PHPウィッシングウォールモジュールの詳細な機能分析_PHPチュートリアル

PHPウィッシングウォールモジュールの詳細な機能分析_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:03:041898ブラウズ

ウィッシングウォールモジュールの機能分析
1. 最新テクノロジー
1. ウィッシングノートを移動するためのドラッグアンドドロップ DOM テクノロジーの実装
ドラッグ可能な DOM パターンの目的は、閲覧者が独自のページを定義できるようにすることです。ページ内の各要素の位置。マウスを使用して移動したい部分を選択し、新しい位置にドラッグするだけでページをカスタマイズできます。

DOM は Document Object Model の略称で、ブラウザ、プラットフォーム、言語に依存しないインターフェースであり、ユーザーはページの他の標準コンポーネントにアクセスできます。 DOM は、階層構造で編成されたノードまたは情報の集合です。この階層により、開発者はツリー内を移動して特定の情報を探すことができます。この構造を分析するには、通常、作業を行う前にドキュメントの構造階層全体をロードする必要があります。 DOM は情報階層に基づいているため、ツリーベースまたはオブジェクトベースと言われます。
特定の実装では、次の時間がトリガーされます:
(1)moveStart
(2)Move
(3)moveEnd
マウスの左ボタンが押されてマウスが動き始めたとき、ドラッグされたウィッシュ上でbar moveStart イベントがトリガーされます。ユーザーは moveStart イベント ハンドラーを使用して、ドラッグ開始時に JavaScript コードを許可できます。 moveStart イベントがトリガーされると、オブジェクトがドラッグされている限り、常に移動時間がトリガーされます。ドラッグが停止すると、moveEnd イベントがトリガーされます。
echo はウィッシュバースタイルのレイアウトを出力します。コードは次のとおりです:

コードをコピーします コードは次のとおりです:

echo "
";


マウスの左ボタンが押されると、マウスの時間 onmousedown を使用して Move() 関数がトリガーされます



コードをコピーします

コードは次のとおりです:

var Layer='';
document.onmouseup=moveEnd;
document.onmousemove=moveStart;
var b;
var c;
function Move(Object,event){ //DIV ウィッシングノートを移動します
Layer=Object . id;
if(document.all){
document.getElementById(Layer).setCapture();
b=event.x-document.getElementById(Layer).style.pixelLeft; // 左の境界線を設定します
c= event.y-document.getElementById(Layer).style.pixelTop; //右の境界線を設定します
}else if(window.captureEvents){
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
b=event. layerX; / /本体を基準とした時間オブジェクトの横座標を返します
c=event.layerY //本体を基準とした時間オブジェクトの縦座標を返します
}
/**マウスでノートをクリックすると、ノートは * に配置されます。*/
document .getElementById(Layer).style.zIndex =iLayerMaxNum;
iLayerMaxNum=iLayerMaxNum+1;
/********************************/
}

document.all は、ドキュメント内のすべてのタグで構成される配列変数です。ドキュメント オブジェクト内の要素 この配列はドキュメント内のすべての要素にアクセスできます。
構文:
document.all[i]
document.all[name]
document.all.tags[tagname]
説明:
all[] は、多機能の配列のようなオブジェクトです。ドキュメント内のすべての HTML 要素。 all[] 配列は IE4 から生まれ、他の多くのブラウザーで採用されています

all[] は、Document インターフェースの標準の getElementById() メソッドと getElementByTagName() メソッド、および Document の getElementByName() メソッドに置き換えられました。物体。

all[] には、元の順序を保持する要素が含まれており、配列内の正確な数値位置がわかっている場合は、配列から要素を直接抽出できます。ただし、HTML 属性名または ID に基づいて要素にアクセスするには、all[] 配列を使用する方が一般的です。要素が指定された名前を持つ場合、同じ名前を共有する要素の配列が取得されます。
document.all はブラウザが IE かどうかを判断できます
コードをコピーします コードは次のとおりです:

if(document.all){
alert("is IE!");
}

window.captureEvents ()
window.captureEvents(event1 |event2 |eventN)
captureEvents() メソッドは、発生するすべてのイベント タイプを垂直バーで区切ります。メソッドは次のとおりです。
Event .ABORT
Event.BLUR
Event.CHANGE
Event.CLICK
Event.DBLCLICK
Event.DRAGDROP
Event.ERROR
Event.FOCUS
Event.KEYDOWN
Event.KEYPRESS
Event.KEYUP
event.load
event.Mousedown
event.MouseMove
Event.Mouseout
Event.MouseOver
Event.MouseUp
Event.Move
EVENT.RESET
EVENT.RESIZE
EVENT.EVENT.EVENT.SUBMIT
EVENT.UNLOAD

SAMPERコード:
コードをコピーします コードは次のとおりです:

-
var counter = 0;
window.captureEvents(Event.CLICK)
window.onclick = myClickHandler;
function myClickHandler(){
window.document.myForm.myText.handleEvent;
}
function changeText(){
document .myForm.myText.value = counter++;
}
-->
TEXT size=2 value=" " name="myText" onClick='changeText()'>





マウスが移動すると、moveStart()関数がトリガーされます。コードは次のとおりです。次のように:



コードをコピーします

コードは次のとおりです:

function moveStart(d){
if(Layer!=''){ //レイヤーが空でない場合
if(document.all){
document.getElementById(Layer).style.left=event.x-b; //左マージンを設定します
Document.getElementById(Layer).style.top=event.y-c; //右マージンを設定します
}else if(window.captureEvents){
document.getElementById(Layer).style.left= (d .clientX-b)+"px";
document.getElementById(Layer).style.top=(d.clientY-c)+"px";
}
}
}

DOM メソッドを適用します (ドキュメント オブジェクトの getElementById メソッド) は、ウィッシュ ノートを含むレイヤーの左マージンと上マージンの間の距離を取得します。 b と c は、それぞれ Layer レイヤーの水平座標と垂直座標の取得を表します。
clientX: ウィンドウのクライアント領域を基準としたマウス座標の x 座標を取得します。このプロパティは読み取り専用であり、デフォルト値はありません。
clientY: ウィンドウのクライアント領域を基準としたマウス カーソルの y 座標を取得します。このプロパティは読み取り専用で、デフォルト値はありません。
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft

すべてのブラウザの共通プロパティ:
screenX:
表示画面上のマウスの座標。
clientX: ページ表示領域内のマウスの座標。

固有の属性: (
注: IE と FF の位置には 1 ピクセルの違いがあります。実際、IE の位置は 0 から始まり、FF の位置は 1 から始まります。FF は常に 1 ピクセル大きくなります。 IE。実際の状況に基づいて処理する必要があります。)
pageX: FF 特有の、ページ上のマウスの位置をページ全体に簡単に配置できます。 IE には直接置換属性がありません。

layerX:FF特有、「イベントを発生させた要素の階層関係において、その位置が設定されている要素に最も近い親要素」の境界線を基準としたマウスの位置が上から始まります境界線の左隅。つまり、親要素に境界線がある場合、座標の原点はコンテンツ領域の左上隅ではなく、境界線の左上隅になります。

offsetX: IE に特有の、「イベントをトリガーした要素」に対するマウスの位置は、境界線の左上隅からではなく、コンテンツ領域の左上隅から配置されます。この属性は比較的簡単に使用でき、要素内のマウス ポイントの位置を判断するのに非常に便利です。FF には直接置換属性がありません。

x:
IE に特別で、layerX と同じ効果があり、layerX の直接置換属性として使用できます。

offsetLeft: この属性はイベント オブジェクトの属性ではありませんが、DOM オブジェクトによって所有されます。この属性は、DOM オブジェクトの「DOM オブジェクトの階層内でオブジェクトに最も近い親オブジェクト」を表します。位置セット」と言われても、その効果はブラウザによって異なります。FF では上記の指示に厳密に従っています。ただし、IE6/7 では、このプロパティは直接の親オブジェクト内の DOM オブジェクトの位置を返します。しかし、IE8 ではこの問題は修正されましたが、他のブラウザでは親オブジェクトのコンテンツ領域の左上隅から配置が開始されますが、IE8 では親要素の境界線の左上隅から配置が開始されます。テストのため IETester では IE8 環境なので IETester の問題である可能性も否定できません。
マウスを離すと、moveEnd() 関数がトリガーされます。 コードは次のとおりです。
コードをコピーします。 コードは次のとおりです。
function moveEnd(d){
if( Layer!=''){ // レイヤーが空でない場合
if(document.all){
document.getElementById(Layer).releaseCapture();
Layer='' // レイヤーを空に設定します
} else if(window.captureEvents ){
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
Layer=''; // レイヤーを空に設定します
}
}
}


上記のコードでは、setCapture() の関数は、後続のすべてのマウス イベントをこのオブジェクトに送信することです。 releaseCapture() の関数は、マウス イベントを返し、ドキュメント、ウィンドウ、その他のオブジェクトにそれを処理させることです。ドラッグプロセス中に、他の要素を通過することによる干渉が発生しないようにします。さらに、Win32 では、MOUSEMOVE 時間が連続的ではなく、マウス ポインターが 1 ピクセル移動するたびに、Windows がマウス ポインターの位置の変化を定期的に検出するわけではありません。 MOUSEMOVE を生成します。そのため、直径5ピクセルのドットなどの小さなページオブジェクトの場合、setCaptureとreleaseCaptureがないと、マウスを押したまま素早くマウスを動かした後、マウスが離れてしまう可能性がありますが、次の Mousemove イベントがこのドット オブジェクトに送信されなくなるため、小さなドットはそのまま残ります。

2. QQ番号テキストボックスに数字以外の文字を入力することは禁止されています
動的ウェブサイトでは、ユーザーが入力したテキストや値の正当性を確保するために、ユーザーが入力したデータはデータの正確性と安全性を確保するために検証する必要があります。このモジュールは、ユーザーが QQ テキスト ボックスに中国語または英語の文字を入力することを禁止します。
コードをコピーします コードは次のとおりです:

onKeyUp="setQQ();if(/(^0+)/.test(value))value=value.replace(/^0*/, '')"
onKeyDown="setQQ();" //キーボードが押されたときにトリガーされます。たとえば、1 を押し続けたときに、この関数が有効になります
onKeyPress="returnevent.keyCode>=48 &&event.keyCode<=57;" size="16" maxlength="10"
onpaste="var s=clipboardData.getData('text'); if(!/D/.test(s))value=s.replace(/^0* /,'');
return false;"
/>

上記のコードでは、値を制御するために 3 つのイベントが適用されますQQ番号入力の
onKeyUp イベント: キーボードのキーが放されたときにイベントが発生します。数値の場合は、QQ 番号テキスト ボックスに追加できます。
onKeyPress イベント: キーボードのキーが押されてキーが放されたときにイベントが発生します。ユーザーは 0 から 9 までの数字のみを入力できます。
onpaste イベント: ユーザーがデータを貼り付けてシステム クリップボードからドキュメントにデータを転送するときに、ターゲット オブジェクトで発生します。ユーザーが QQ 番号テキスト ボックスに文字列を貼り付ける場合、ユーザーは数値文字列のみを貼り付けることができます。
さらに、 isNaN() メソッドを使用して、入力された QQ 番号が数値であるかどうかを確認します。
isNaN(num Value);
numvalue: は必須のオプションで、NaN 値かどうかを確認するために使用されます。
署名されたウィッシュノートが送信されると、checkForm() 関数がトリガーされ、document.getElementById() 関数とフォームフィールドの ID (QQ テキストボックスの ID 番号は「QQ」) が使用されます。この要素を直接取得するには、 isNaN() メソッドを使用して、QQ 番号が数値であるかどうかを確認します。
コードをコピーします コードは次のとおりです:

function checkForm(){ //祝福の内容
if(isNaN(document.getElementById('QQ').value)){
alert('The入力した QQ 番号 数値タイプではありません。再入力してください。');
document.getElementById('QQ').focus();
return false;
}
}

一般的なテキスト ボックス制限コード:
コード例:
onkeyup=" value=value.replace(/[^a-zA-Z]/g,'')"
説明:
replace(/[^a-zA-Z]/g, '')
ここで、^ は論理単語「not」の後に a-zA-Z が続き、英語の大文字と小文字の範囲を指し、「/g」は次の文字でのグローバル置換を意味します '' (現在空です)。
このコードの意味は次のとおりです: テキスト ボックスには大文字または小文字のみを入力できます。そうでない場合は、自動的に削除されます。
よく使用される入力制限コード:
英文字のみ入力可能:
コードをコピー コードは次のとおりです:



英語と数字のみ入力可能です:
コードをコピー コードは次のとおりです:

<入力タイプ="text" onkeyup="value= value.replace(/[^0-9a-zA-Z]/g,'')"/>
W は文字、数字、アンダースコア、または中国語の文字に一致し、D は数字の一致を意味します

数字と^dのみ 中国語入力で入力する場合。
文字は入力できませんが、/.-etc は入力できます
数字は入力できず、貼り付けもできません < ;input name=txt1 onchange="if(/D/.test(this.value)){alert('数字のみ入力可能'); this.value='';}">
入力できるのは文字と漢字 (および一部の数字以外の文字) のみです


コードをコピーします

コードは次のとおりです:
小数点以下2桁までしか入力できません(数字も中国語も入力可)、文字や算術記号は入力できません



コードをコピー

コードは次のとおりです:


3、メモ内容の長さを制限するウィッシュ内容に署名する場合、通常、ユーザーのテキスト入力の長さを制限する必要があります。文字列の長さの計算では、中国語の文字は 2 文字を占めます (漢字の幅と格納場所によって、1 つの漢字が 2 文字を占めることが決まります)。一方、英語の文字と数字は 1 文字として認識されます。 PHP で文字列の長さを取得するには、strlen() 関数を使用します。ただし、このモジュールでは、願いの内容に入力できる残りの文字数をカウントできるようにするために、中国語と英語の数字が混在する文字列の長さを計算する関数を再入力する必要があります。願い事内容に署名する場合、リアルタイムで文字数制限が発生します。
祝福ノートの内容を入力するときに残りのバイト数を制御するテキストボックスを追加します。


コードをコピー

コードは次のとおりです:
上記のコードでは、「freeLength」を使用して祝福ノートの残りの文字数をリアルタイムに出力します。
祝福ノートの内容を入力するための編集ボックスを追加し、JavaScript スクリプトのカスタム関数 textCounter() をトリガーするための onkeydown イベントと onkeyup イベントを追加して、エディターによって入力される文字数を制限します。最大入力は 150 文字です。希望内容が150を超える場合は自動的に削除され、最大容量値のみが残ります。


コードをコピーします
コードは次のとおりです:



上記のコードでは、textCounter() 関数には 3 つのパラメーター値があります。最初のパラメーター値 "this.form.content" は入力ウィッシュ コンテンツを指します。希望内容を入力できる文字数。3 番目のパラメータ「150」は、希望内容を入力できる最大値です。

JavaScript スクリプトを使用して関数 textCounter() をカスタマイズし、祝福の内容が 150 文字を超えないよう制御します。 ここで、中国語と英語では占有されるバイト数が異なることに注意してください。

DBCS は、ANSI を含むアジア文字セットです (ANSI は、0 から 255 までの ASCII コード値を持つ文字です)。 DBCS は 1 バイトまたは 2 バイトを使用して文字セットを表し、256 を超える文字は 2 バイトを占有します。文字が ANSI の場合、ファイルに保存する際に使用するのは 1 バイトだけです。非 ANSI (256 文字を超える) の場合は 2 バイト必要です。したがって、ここでは三項演算子を使用して、英語の数字と漢字がそれぞれ占めるバイト数を計算します。変数 StrValue.charCodeAt(i) が 256 以下の場合は 1 バイトとして計算され、256 より大きい場合は 2 バイトとして計算されます。
コードをコピー コードは次のとおりです:

function textCounter(field, countfield, maxlimit) { //祝福の内容は 120 文字に制限されています
var StrValue = field.value;
var ByteCount = 0;
var StrLength = field.value.length;
for (i=0;i ByteCount = ( StrValue.charCodeAt (i)<=256) ? ByteCount + 1 : ByteCount + 2;
}
if(ByteCount<=maxlimit){
strtemp=StrValue;
document.getElementById('ContentSample').innerHTML = StrValue;
countfield.value = maxlimit - ByteCount;
}else{
document.getElementById('content').innerHTML = strtemp;
}
}

この関数は表示部分を 150 バイトまでしか制限できませんが、入力ボックスはは現在利用できず、ペーストが150バイトを超えると空白で表示されます。コードを次のように変更します:
コードをコピーします コードは次のとおりです:

function textCounter(field, countfield, maxlimit) { //祝福の内容は 150 文字に制限されています
var StrValue = field.value ;
var ByteCount = 0;
var StrLength = field.value.length;
var Cutstr = '';
for (i=0;i ByteCount = (StrValue.charCodeAt(i)<; =256) ? ByteCount + 1: Bytecount + 2; // 祝福の数を覚えておいてください、英語の数字は 1 文字を占め、漢字は 2 文字を占めます
if (bytecount & lt; = maxlimit) {
Cutstr = strvalue.substring (0, i + 1) ; //入力文字が制限長未満の場合、現在の入力文字 i+1 を入力文字数まで切り取ります
strtemp = Cutstr; //それ以外の場合は切り取ります。入力文字の最大長
}
}
if (ByteCount<=maxlimit){
document.getElementById('ContentSample').innerHTML = Cutstr; //出力表示コンテンツ
countfield.value = maxlimit - ByteCount;
}else{
document.getElementById('content').value = Cutstr; //入力ボックスに表示されるコンテンツを制限する
document.getElementById('ContentSample').innerHTML = Cutstr; //表示されるコンテンツを出力する
countfield.value =0 ; //残りのバイト数
}
}


in 上記のコードでは、「countfield.value」を使用して入力文字列の残りの文字数を計算し、この値を 2 番目のパラメーター値「this」に割り当てます。 textCounter() 関数の「.form.freeLength」を使用して、現在のウィッシュ コンテンツに許可されている文字数をリアルタイムで計算します。


4、PHP検証コードクラス 現在のページで入力された検証コードが正しいか間違っているかを検証します
入力が正しいかどうかを検証する現在のページ検証メソッド Ajax、add.js

コードをコピーしますコードは次のとおりです:

function codecheck(){
var getVcode = document.getElementById('checkcode').value; //認証コード入力ボックスの内容を取得
xmlhttp.open("get","codeChk.php?code=" +getVcode , true); //検証コードが正しいかどうかを確認するために codeChk.php ページに送信します
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4)
{
if( xmlhttp.status==200 )
{
var msg=xmlhttp.responseText;
if(msg==1){
document.getElementById("messageImg").src="images/dui.gif"; // 検証コードは正しく、出力には正しい画像が表示されます
Document.getElementById('txt_hyan').value = getVcode;
}else{
document.getElementById("messageImg").src="images/cuo.gif";確認コード エラー。出力に間違った画像が表示されます
document .getElementById('checkcode').focus();
return false;


コードは次のとおりです。


session_start();
require 'secoder.class.php'; //最初にクラスをインクルードし、実際の状況に応じて実際のパスを変更します。
$vcode = new YL_Security_Secoder(); // オブジェクトをインスタンス化します
$code = $_GET['code'];
echo $vcode->check($code); // check($code) 関数によって返されますtrue または false。true が返された場合、codeChk.php ページは 1 を出力します。それ以外の場合、secoder.class.php 検証コード classコピーの

check($code) 関数は出力されません。 code

コードは次のとおりです:


public static function check($code) {
isset($_SESSION) || 検証コードを空にすることはできません
if(empty($code) || empty($ _SESSION[self::$seKey])) {
return false;

}
// セッションの有効期限が切れました if(time() - $_SESSION[self::$seKey]['time'] > ; self::$ 期限切れ) { unset($_SESSION[self::$seKey]); return false;}
if(strtoupper($code) == $_SESSION[self::$seKey]['code ']) { / /大文字と小文字を区別しない比較
return true
}
return false



5、指定された範囲のウィッシュバーを生成するためのランダムアルゴリズムを定義します

このモジュールはランダムを生成する必要があります。指定範囲を表示するアルゴリズム 毎回異なる願いノートがリーダーの前に表示されるような位置に願いノートが表示されます。このモジュールは主に rand() 関数を使用して、希望する壁紙の表示位置を制御します。
rand() 関数はランダムな整数を生成するために使用されます

構文: rand(min,max)


パラメータ:
min、max はオプションであり、乱数生成の範囲を指定します
オプションのパラメータ min と max が指定されていない場合、rand() は 0 から RAND_MAX までの擬似乱数の整数を返します。一部のプラットフォーム (Windows など) では、RAND_MAX は 32768 のみです。 32768 より大きい範囲が必要な場合は、min パラメーターと max パラメーターを指定して RAND_MAX より大きい数値を生成するか、代わりに mt_rand() の使用を検討してください。
mt_rand() はメルセンヌ ツイスター アルゴリズムを使用してランダムな整数を返します

構文: mt_rand(min,max)

オプションのパラメーター min と max が指定されていない場合、mt_rand() は 0 から RAND_MAX までの擬似乱数を返します。古い libc 乱数ジェネレーターの多くには、不確実で未知の特性があり、非常に遅いです。 PHP の rand() 関数は、デフォルトで libc 乱数ジェネレーターを使用します。 mt_rand() 関数は非公式にこれを置き換えるために使用されます。この関数は、乱数生成器としてメルセンヌ ツイスターの既知の機能を使用しており、libc が提供する rand() よりも平均して 4 倍高速に乱数値を生成できます。
願いの壁紙をランダムに表示するためのキーコードは次のとおりです:



コードをコピーします
コードは次のとおりです:

$T=ランド(320,520);
$L=ランド(5,790); 
$Z=$page_count;
$Z = $Z - 3;
echo "






< ;TD>

" 。$ Picker。 ".$author."


[祝福你] 福气:".$hits." QQ:".$QQ."
< ;/DIV>





愛墙编号:".$id." "。 $送信時間。 " ×


";



6,IP获取用户の位置を解析城市

PHP では、PHP で指定された $_SERVER['REMOTE_ADDR'] を使用して、クライアントの IP アドレスを一般的な計算法で数値列に解析します (各都市には 1 つの対応する数値列があります)。この数字列は、ユーザーがいる城市の名前を特定します。 データベースでは、IP 領域の数字列が、非現実的な IP アドレスに保存されるため、このとき、クライアントまたはサーバーの IP を指定された数字列の形式に変換する必要があります。

$ip=getenv('REMOTE_ADDR');   //获取客户端IP地址
/********IPゾーンの説明***********/
$cip=cip($ip);$csql="select * from tb_ip where (ip1//执行查询$res = $DB->fetch_one_array($csql);$ cip1=$res['country'];
if($cip1==""){
$cip1="IP不详";
}



二、实现过程
1、双击许愿字条、该字条置顶

(1) ユーザが文字列を二重に許可した後、その文字列は、ポップアップ表示の効果を達成するために、トップ画面を表示すると同時に、トップ画面全体をシールドします。 DIV を 1 つ設置します,ID名は“shadeDiv”、代価は下の通り


(2)JavaScript による独自定義の Hide() 関数、DIV の表示プロパティ表示設定を介して空、藏藏DIV に設定
,代码如下:

复制代码
代码如下:

function Hide(){ document.getElementById("shadeDiv").style.display = "none"; iLayerMaxNum = iLayerMaxNum+2;
}

(3) CSSスタイルシートで隠しDIVのスタイルを設定します。コードは次のとおりです:
#shadeDiv{filter:alpha(Opacity=55);opacity:0.35;background: #333;position:absolute;} //IE ブラウザーでのフィルター効果は互換性がありません
(4)次に、既にデザインされているウィッシュノート DIV レイヤーをダブルクリックします。 コードは次のとおりです:
ondblclick=Show(".$id.",'shadeDiv')
(5) 関数 show() をカスタマイズして背景を制御します。効果。
コードをコピー コードは次のとおりです:

function Show(n,divName){
document.getElementById(n).style.zIndex = iLayerMaxNum+1;
document.getElementById(divName)。 style.display = "block";
document.getElementById(divName).style.zIndex = iLayerMaxNum;
var size = getPageSize(); //非表示領域の領域を設定します。この例で設定するウィッシュウォール表示領域 フィルターの領域
document.getElementById(divName).style.width = size[0]+"px";
document.getElementById(divName).style.height = size[1]+"px";
}

(6) ここで得られるのは数字だけです
コードは次のとおりです。次のように:
function getPageSize(){
var w =document.body.clientWidth;
var h= document.body.clientHeight;
arrayPageSize = new Array(w,h);
return arrayPageSize;
}


2. Jpgraph グラフィックス クラス ライブラリを使用して、地域統計に従って希望率を分析する 3D 円グラフを実装します。
(1) フローティング フレーム テクノロジーを適用して、さまざまなカテゴリで地域統計分析結果を取得します。セクションはフローティング フレームです。フローティング フレーム レイアウトのコードは次のとおりです:

コードをコピーします コードは次のとおりです:





< ; !----------------------------3D 円グラフを使用して、地域ごとの「家族」の希望率を統計的に分析します。 - ----------------------->











<-- -- --------------------- 3D 円グラフを適用して、地域ごとの「自己カテゴリ」希望率を分析します----------- - ----------------->













(2) 3D 円グラフを適用するすべての領域を分析するための動的統計 希望の比率
まず、Jpgraph クラス ライブラリを使用してチャート分析を実装し、include ステートメントを使用して jpgraph.php ファイルを参照する必要があります。コードは次のとおりです:

コードをコピーします コードは次のとおりです:
include("global.php") //データベース ソース ファイルへのリンク
include(" jpgraph/jpgraph.php"); / /チャート分析ファイルを引用
?>

円グラフを描画するには、jpgraph_pie.phpファイルを引用する必要があります。 3D 効果を備えた円グラフを描画するには、PiePlot3D クラス オブジェクトを作成する必要があります。PiePlot3D クラスは Jpgraph_pie3d.php で定義されており、このファイルを呼び出すには include ステートメントを使用する必要があります。コードは次のとおりです:

コードをコピーします コードは次のとおりです:
include("jpgraph/jpgraph_pie.php") //円グラフのクラス ファイルを参照します
include_once ("jpgraph/jpgraph_pie3d.php "); // 3D 円グラフ PiePlot3D オブジェクトが配置されているクラス ファイルを参照します
?>

グラフ オブジェクトを作成し、サイズが 990x276 ピクセルのキャンバスを生成し、統計グラフが配置されているキャンバスの位置とキャンバスの影。タイトルと凡例のフォントを設定します。円グラフを配置するキャンバスの位置と半径を設定し、描画した 3D 円グラフを画像に追加します。

コードをコピーします コードは次のとおりです:

$graph = new PieGraph(990,276); //キャンバスを作成
$graph->SetShadow() //影を設定
$graph->title->Set("3D パイを適用全エリアの願望率をグラフ統計分析"); //タイトル名を設定
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //タイトルのフォントを太字に設定
$graph-> legend-> ;SetFont(FF_SIMSUN,FS_NORMAL); //円グラフのテキストのフォントを設定します
$size=0.5; //円グラフの半径を設定します
/***********************すべての希望率の統計************************/
//円グラフ オブジェクト
$ p0= new PiePlot3D($arraynum0); //円グラフ オブジェクトを作成します
$p0->SetLegends($arraycip0); //サイズを設定します円グラフの座標
$ p0->SetCenter(0.45,0.48); //円グラフの座標位置を設定
$p0->SetLegends($arraycip0); //都市名を設定
$p0-> ;value->SetFont(FF_FONT0 ); //フォントを設定します
$p0->title->SetFont(FF_SIMSUN,FS_BOLD); //タイトルのフォントを太字に設定します
/************************************************* ***********/
$graph->Add($p0) ; //画像に3D円グラフを追加
$graph->Stroke() //画像を出力
?>

(3) 「家族タイプ」希望率の3D円グラフ動的統計分析。
実装方法は基本的に全希望率を取得する方法と似ていますが、家族の希望数を取得する際にwhereクエリ条件を設定する点が異なります。また、円グラフの半径と位置の設定が若干変更されています。
コードをコピーします コードは次のとおりです:
include("global.php") //データベースファイルへのリンク
include ("jpgraph/jpgraph.php"); ; //チャート分析クラスファイルを参照
include ("jpgraph/jpgraph_pie.php") //円グラフのクラスファイルを参照
include_once ("jpgraph/jpgraph_pie3d.php") //3D 円グラフが含まれるクラスファイルを参照チャート PiePlot3D オブジェクトは見つかります
/** *********************統計ファミリーカテゴリ*************************/
$sql2="select unique(count(cip)) as num,cip from tb_wishes where wishsort='family' group by cip ";
$DB-> query($sql2); //家族の願いの動的統計
$res2=$DB->get_rows_array($sql2); //二次元配列を生成します
$rows_count2=count($res2);二次元配列の数
$arraynum2=array() ; //都市の「家族タイプ」希望の合計配列を宣言
$arraycip2=array(); //「家族タイプ」の都市名の配列を宣言
// array
for($k=0;$k array_push($arraynum2,$res2[$k][num]) //街の願いの数を出力
array_push($ arraycip2,$res2[$k][cip]); //都市名を出力します
}
/************************************************* ***********/
//キャンバスを作成します
$graph = new PieGraph(320,246); //キャンバスを作成します$graph->SetShadow(); //影を設定
$graph->title ->Set("全エリアの[家族タイプ]希望率の統計分析") //タイトル名を設定
$graph ->title->SetFont(FF_SIMSUN,FS_BOLD); //タイトルのフォントを太字に設定します
$graph->legend->SetFont(FF_SIMSUN,FS_NORMAL);
$size=0.3; //円グラフの半径を設定します
/***********************家族希望率統計*************************/
$p= new PiePlot3D($arraynum2) //円グラフオブジェクトを作成します
$p->SetLegends( $arraycip2); //都市名を設定します
$p->SetSize($size) //円グラフのサイズを設定します
$p->SetCenter(0.45,0.55);円グラフの座標位置
$p->value->SetFont(FF_FONT0); //フォントを設定します
$p-> ;title->SetFont(FF_SIMSUN,FS_BOLD); beold
/************************************************* ***********/
$graph->Add($p); //画像に 3D 円グラフを追加します
$graph->Stroke(); //画像を出力します
?> ;



3、ウィッシングウォールリスト、ウィッシュウォールノートの高度な検索機能の実装

訪問者がさまざまなカテゴリのウィッシングノートをより明確に表示できるようにするために、このモジュールはラブウォールリストとウィッシングノートの高度な検索機能を備えて設計されています。その中で、ラブウォールリストはデフォルトですべての願い事ノートを取得しますが、高度な検索機能は訪問者が設定した特定のクエリ条件に従って一致する願い事ノートを検索します。 ラブウォールリストと願い事メモの高度な検索をデザインするためのフォーム要素は次のとおりです:


コードをコピーします
コードは次のとおりです:

<テーブル幅="1004" 高さ="25" ボーダー="0" セルパディング="0" セルスペース="0">
<フォーム名="フォーム" メソッド="get" アクション="" >

クエリ条件を入力してください:

< ;
< type="submit" name="submit" value="Retrieve wish" class="btn_search">
(複数条件クエリをサポート) 、例: ラブウォール番号、願い事の人、願い事内容など)







4、願い事の壁の表示効果は次のとおりです:





http://www.bkjia.com/PHPjc/327860.html
www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/327860.html

願いの壁モジュールの機能分析 1、ホットテクノロジー 1、願いノートを移動するためのドラッグ可能な DOM テクノロジーを実現、ドラッグ可能な DOM パターン (Draggable DOM パターン) の目的は、閲覧者が独自のページを定義できるようにすることです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。