تبليغاتX
بهترين وبلاگ آموزشی

بهترين وبلاگ آموزشی

 

*****************************************************************

اموزش برنامه تبدیل عدد به زمان برای کارهای مولتی مدیا فوق العاده کاربردی

ابتدا یک فرم درست کنید و بعد دوتا TextBox قرار بدید و این کدها رو تو فرمتون کپی کنید

نکته : اینکه TextBox 1 برای وارد کردن عدد مورد نظر شماست

Private Sub Text1_LostFocus()

Dim isec As Integer

isec = Val(Text1.Text)

Dim breaksec

breaksec = Str$(Int(isec / 60)) & " ÏÞíÞå æ " & Str$(isec Mod 60) & " ËÇäíå"

Text2.Text = breaksec

End Sub


نوشته شده در جمعه هشتم تیر 1386 ساعت 17:0 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ نظر بدهید ]

+ نوشته شده در  یکشنبه بیست و ششم خرداد 1387ساعت 11:24  توسط titanpc  | 

 

فرستادن پیام کوتاه با ویژوال بیسیک

توجه : یه کتاب گرفتم : 211 نکته برای برنامه نویسان ویژوال بیسیک

ابتدا یک پروژه استاندارد باز کنید و سپس یک ماژول هم به اون اضافه کنید

و 4 تا TextBox و 4 تا Label و 2 تا Command به فرم بیافزایید

و بعدش نام TextBox ها رو مثل شکل قرار بدید و نام command1 رو btnSend بزارید

label ها رو هم دلخواه قرار بدید حالا این کدها رو هم تو فرمتون کپی کنید

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub btnSend_Click()

On Error Resume Next

btnSend.Enabled = False

MsgBox (SendMessage(txtusername.Text, txtpassword.Text, txtNumber.Text, txtMessage.Text))

btnSend.Enabled = True

End Sub

Private Sub Form_Load()

txtusername.Text = "User@host.com"

End Sub

حالا این کدها رو هم تو ماژولتون کپی کنید

 

Public Function SendMessage(username As String, password As String, _

destination As String, message As String)

Dim xmlstring As String

xmlstring = ") & "?> " & _

"<Request xmlns:xsi=" & Chr(34) & "http://www.w3.org/2001/XMLSchema-instance" & Chr(34) & " xsi:noNamespaceSchemaLocation=" & Chr(34) & "http://schema.2sms.com/1.0/0410_RequestSendMessage.xsd" & Chr(34) & " Version = " & Chr(34) & "1.0" & Chr(34) & ">" & _

"<Identification>" & _

"<UserID>>" & _

"<Password>" & password & ">" & _

"Identification>" & _

"<Service>" & _

"<ServiceName>SendMessage>" & _

"<ServiceDetail>" & _

"<SingleMessage>" & _

"<Destination>" & destination & ">" & _

"<Text>>" & _

"SingleMessage>" & _

"ServiceDetail>" & _

"Service>" & _

"Request>"

'open connection to server and send

Dim xmlrequest As MSXML2.XMLHTTP

Set xmlrequest = New MSXML2.XMLHTTP

xmlrequest.Open "POST", "http://www.2sms.com/xml/xml.jsp", False

xmlrequest.setRequestHeader "content-type", "text/xml"

xmlrequest.send xmlstring

'get the response back

response = xmlrequest.responseText

'set up DOM to parse

Dim xmlresponse As MSXML2.DOMDocument30

Set xmlresponse = New MSXML2.DOMDocument

xmlresponse.async = False

xmlresponse.resolveExternals = False

xmlresponse.validateOnParse = False

On Error Resume Next

xmlresponse.loadXML response

'pull out relevant variables from response

javaresult = (xmlresponse.getElementsByTagName("Result").Item(0).Text)

errorCode = (xmlresponse.getElementsByTagName("ErrorCode").Item(0).Text)

errorreason = (xmlresponse.getElementsByTagName("ErrorReason").Item(0).Text)

messageid = (xmlresponse.getElementsByTagName("MessageID").Item(0).Text)

If errorCode = "00" Then

SendMessage = javaresult

Else

If errorreason = "" Then

SendMessage = "Message Failed - Unknown Error"

Else

SendMessage = "Message FAILED. (Reason: " & errorreason & ")"

End If

End If

End Function

بچه ها من خودم تست نکردم ولی فکر کنم باید تو یه سایتی ثبت نام کنید


نوشته شده در جمعه هشتم تیر 1386 ساعت 16:58 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ نظر بدهید ]


آموزش ویژوال بیسیک 6 (قسمت هفتم ساخت منو)

برنامه نویسی ویژوال بیسیک 6 ( قسمت هفتم )

در قسمت هفتم آموزش برنامه نویسی ویژوال بیسیک 6 به ساخت منو می پردازیم. 

منوها : برای قراردادن و طراحی منو برای فرم از منویtools/menu editor را انتخاب میکنیم. 

برای افزودن گزینه ای جدید به منو عنوان آن را در کادر caption و نام آن را در کادر name تایپ میکنیم 

برای آنکه گزینه فعلی زیر منوی گزینه قبلی شود کلید جهت راست را فشرده و برای لغو آن از کلید جهت سمت چپ استفاده میکنیم. 

برای ترتیب گزینه ها در منو از فلش بالا و پایین استفاده میکنیم و برای آنکه کنار گزینه علامت تیک گذاشته شود از کادر checked برای فعال کردن گزینه از کادر enabled و برای قابل رویت بودن گزینه از کادر vizible استفاده میشود . 

برای استفاده کردن گزینه ای بین گزینه های دیگر از insert و برای حذف یک گزینه از delete استفاده میشود .  

برای آنکه بین گزینه های منو خطی قرار گیرد که مثلا بعضی گزینه ها را از بعضی دیگر جدا کند , گزینه ای با caption خط فاصله ایجاد میکنیم و برای قرار دادن خط زیر برای یکی از حروف گزینه به منظور انتخاب گزینه به کمک alt قبل از حرف مورد نظر در caption کاراکتر &را قرار میدهیم : 

مثال: &file 

خاصیت enabled : در حین اجرای برنامه تغیر این خاصیت به true و false باعث غیر فعال شدن گزینه میشود . 

مثال : در برنامه رو به رو گزینه open را غیر فعال میکند : mnuopen.enabeld=false ,که در اینجا mnuopen نام گزینه است 

خاصیت visible : اختصاص مقدار false به این خاصیت گزینه را پنهان میکند . 

خاصیت checked : خاصیت مقدار true به این خاصیت باعث میشود تا کنار گزینه علامت تیک ظاهر شود . 


نوشته شده در جمعه بیست و پنجم خرداد 1386 ساعت 19:52 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ نظر بدهید ]



+ نوشته شده در  یکشنبه بیست و ششم خرداد 1387ساعت 11:23  توسط titanpc  | 

 

یه پروژه استاندارد درست کنید و سپس 2 تا Radio button و 1 دونه Textbox و از قسمت کامپوننت ها

با زدن Ctrl + T ابزار Microsoft Comm Control 6.0 رو انتخاب و در اخر هم یک Command به فرمتون اضافه کنید

Radio 1 = optEnable

Radio 2 = optstop

text = txtVolts

cmd = cmdexit

MSComm = MSComm1

حالا این کدها رو تو فرمتون کپی کنید

Option Explicit

Private fEnable As Boolean

Private Sub cmdExit_Click()

If MSComm1.PortOpen = True Then

MSComm1.PortOpen = False

End If

End

End Sub

Private Sub Form_Load()

MSComm1.InputLen = 0

MSComm1.CommPort = 1

MSComm1.Settings = "9600,N,8,1"

End Sub

Private Sub optEnable_Click()

fEnable = True

Do Until fEnable = False

DoEvents

Dim BytesToRead As Integer

Dim DataIn As Variant

MSComm1.PortOpen = True

BytesToRead = 1

Do

DoEvents

Loop Until MSComm1.InBufferCount = BytesToRead

DataIn = MSComm1.Input

txtVolts.Text = Asc(DataIn) * 0.0196 & " Volts DC"

MSComm1.PortOpen = False

Loop

End Sub

Private Sub optStop_Click()

fEnable = False

End Sub

حالا برنامه رو اجرا کنید و باید از طریق درگاه کام یه ولتاژ دلخواه رو اعمال کنید


نوشته شده در جمعه هشتم تیر 1386 ساعت 17:2 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ نظر بدهید

+ نوشته شده در  یکشنبه بیست و ششم خرداد 1387ساعت 11:23  توسط titanpc  | 

 

شماره گیری با مودم

شاید خیلی از شما دوستان عزیز فکر کنید که شماره گیری با مودم کار خیلی سختیه ولی من امروز به شما یه تابع رو معرفی میکنم که بتونید به راحتی با مودم شماره گیری کنید.البته تابع شماره مورد نظر شما رو به برنامه PhoneCaller ویندوز میفرسته و به طور اتوماتیک با اون برنامه شروع به شماره گیری میکنه .

تابع :شما این تابع رو توی یه ماژول تعریف کنید :

Public Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" (ByVal DestAddr$, ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Long

بعدش کد زیر رو توی یه دکمه بزارید :

()Private Sub cmdconect_Click

"","tapiRequestMakeCall "9714012 ", "Conect", "Called

End Sub


نوشته شده در جمعه هشتم تیر 1386 ساعت 17:15 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ یک نظر ]


 

یک ساعت دیجیتالی زیبا که هر نیم ساعت بوق می زند و قابلیت درگ کردن دارد و پس زمینه آن شفاف است

یک فرم جدید بازکنید و یک برچسب روی آن قرار دهید و پس زمینه فرمتون را آبی متوسط &H00FF0000& قرار بدهید برای اینکه حذف شود و کد

های زیر را وارد کنید و فونت برچسبتون رو یهلهبشزث قرار بدهید و اندازه فونت رو هم 26 قرار بدهید و رنگ forecolor برچسبتون رو سبز سیر تر

از فسفری یا &H001AD288& قرار بدهید

Option Explicit

Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Private Const LWA_COLORKEY = &H1

Private Const LWA_ALPHA = &H2

Private Const GWL_EXSTYLE = (-20)

Private Const WS_EX_LAYERED = &H80000 '&H70000 &H60000

Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Dim Retval As Long

Private Sub Form_Load()

Retval = Retval Or WS_EX_LAYERED

SetWindowLong Me.hWnd, GWL_EXSTYLE, Retval

SetLayeredWindowAttributes Me.hWnd, RGB(0, 0, 255), 0, LWA_COLORKEY

End Sub

Private Sub Label1_Change()

On Error Resume Next

Select Case Me.Label1.Caption

Case "01:00:00"

Beep 500, 1000

Case "01:30:00"

Beep 500, 1000

Case "02:00:00"

Beep 500, 1000

Case "02:30:00"

Beep 500, 1000

Case "03:00:00"

Beep 500, 1000

Case "03:30:00"

Beep 500, 1000

Case "04:00:00"

Beep 500, 1000

Case "04:30:00"

Beep 500, 1000

Case "05:00:00"

Beep 500, 1000

Case "05:30:00"

Beep 500, 1000

Case "06:00:00"

Beep 500, 1000

Case "06:30:00"

Beep 500, 1000

Case "07:00:00"

Beep 500, 1000

Case "07:30:00"

Beep 500, 1000

Case "08:00:00"

Beep 500, 1000

Case "08:30:00"

Beep 500, 1000

Case "09:00:00"

Beep 500, 1000

Case "09:30:00"

Beep 500, 1000

Case "10:00:00"

Beep 500, 1000

Case "10:30:00"

Beep 500, 1000

Case "11:00:00"

Beep 500, 1000

Case "11:30:00"

Beep 500, 1000

Case "12:00:00"

Beep 500, 1000

Case "12:30:00"

Beep 500, 1000

Case "13:00:00"

Beep 500, 1000

Case "13:30:00"

Beep 500, 1000

Case "14:00:00"

Beep 500, 1000

Case "14:30:00"

Beep 500, 1000

Case "15:00:00"

Beep 500, 1000

Case "15:30:00"

Beep 500, 1000

Case "16:00:00"

Beep 500, 1000

Case "16:30:00"

Beep 500, 1000

Case "17:00:00"

Beep 500, 1000

Case "17:30:00"

Beep 500, 1000

Case "18:00:00"

Beep 500, 1000

Case "18:30:00"

Beep 500, 1000

Case "19:00:00"

Beep 500, 1000

Case "19:30:00"

Beep 500, 1000

Case "20:00:00"

Beep 500, 1000

Case "20:30:00"

Beep 500, 1000

Case "21:00:00"

Beep 500, 1000

Case "21:30:00"

Beep 500, 1000

Case "22:00:00"

Beep 500, 1000

Case "22:30:00"

Beep 500, 1000

Case "23:00:00"

Beep 500, 1000

Case "23:30:00"

Beep 500, 1000

Case "24:00:00"

Beep 500, 1000

Case "24:30:00"

Beep 500, 1000

End Select

End Sub

Private Sub Label1_DblClick()

End

End Sub

Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

MousePointer = 15

Call ReleaseCapture

Call SendMessage(hWnd, &HA1, 2, 0&)

MousePointer = 1

End Sub

Private Sub Timer2_Timer()

Me.Label1.Caption = Time$

End Sub


نوشته شده در جمعه هشتم تیر 1386 ساعت 17:14 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ نظر بدهید ]


آموزش ویژوال بیسیک 6 (قسمت چهارم)

 

بازیابی و فشرده سازی یک پایگاه داده Access از طریق ویژوال بیسیک

برنامه زیر نحوه اصلاح و یا فشرده سازی یک فایل mdb را نشان می دهد برای اصلاح روی دکمه Repair وبرای فشرده سازی آن

روی دکمه Compact کلیک کنید

یک فرم جدید ایجاد کنید و کنترلی از نوع Common Dialog به فرمتون اضافه کنید و یک دکمه با عنوان Repair به فرمتون اضافه

کنید و کد زیر رو در رویداد کلیک آن اضافه کنید

On error goto Repair_Error

dim mdb_name as string

commonDialog1.filter = "Access (*.mdb)|*.mdb"

commonDialog1.flags = &H1000

commonDialog1.filterindex = 1

commonDialog1.action = 1

if commonDialog1.filename <> "" then

screen.mousepointer = 11

mdb_name = .filename

repairdatabase (mdb_name)

screen.mousepointer = 0

msgbox "Database repaired successfully",64,"repair"

end if

screen.mousepointer = 0

exit sub

repair_error:

msgbox "Error when Repairing database",16,error"

screen.mousepointer = 0

exit sub

کنترل دیگری از نوع دکمه بر روی فرمتون قرار بدهید و عنوان آن را Compact قرار بدهید و در رویداد کلیک آن این کد را بنویسید

On error goto Compact_Error

dim mdb_name as string

dim mdb_newname as string

dim mdb_options as string

mdb_name = "c:\dummy.mdb"

commonDialog1.filter = "access (*.mdb)|*.mdb"

commonDialog1.flags = &H1000

commonDialog1.filterindex = 1

commonDialog1.action = 1

if commonDialog1.filename <> then

mdb_name = commonDialog1.filename

compactdatabase mdb_name,mdb_newname & mdb_local & mdb_options

kill mdb_name

name mdb_newname & mdb_local & mdb_options as ndb_name

msgbox "database compressed ok",64,"Compact"

end if

exit sub

Compact_error:

msgbox "unable to compress database",16,"Error"

exit sub

تهیه فهرستی از خصوصیتهای مرتبط با یک جدول ضمیمه شده Access

یک پایگاه داده را در access باز کنید و یک ماژوال به آن اضافه کنید و کد زیر رو به منظور ایجاد تابع List Field Properties در ماژوال وارد کنید

Function listfieldpropeties()

dim mydb as database

dim mytable as tabledef

set mydb = dbengine (0) (0)

set mytable = mydb.tabledefs("Categories")

for x = 0 to mytable.fields.count - 1

debug.print mytable.fields(x).name

for y = 0 to mytable.fields(x).properties.count - 1

debug.print chr(9) & mytable.fields(x).propeties(y).name

next y

next x

end function

در ویژوال بیسیک از منوی ویندوز گزینه immediate را انتخاب کنید و کد زیر را در آن وارد کنید و Enter را بفشارید

? listfieldproperties()


نوشته شده در جمعه هشتم تیر 1386 ساعت 17:12 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ نظر بدهید ]


آموزش ویژوال بیسیک 6 (قسمت دوم)

 

تخصیص حافظه پویا چیست؟

منظور از تخصیص حافظه پویا اینه که بتوانیم در زمان اجرا از سیستم حافظه اخذ کنیم .برای ایجاد حافظه در زمان اجرا از دستور(New)استفاده میشود

private MnodeDate as variant

private MNextnode as CListnode

Public Get Data() as variant

Date=mNodeData

End Property

Public Propertry let Data(byavl vNewValue as variant)

MNodeData=vnewValue

end property

set nextnode=mnextnode

end property

Public property let next node (Byval vnewVlaue as variant)

set mNextNode =vnewvalue

end property

این دستورات کلاسی را درست میکنند که نامش ClistNode است.یعنی ماژول کلاسی به نام CListnode درست کردیم.دستور شماره 2 متغییر mNextNode را از نوع کلاس ClistNode تعریف کرده است و دستور 8 متد Property Get NextNode()

را از نوع ClistNode تعریف کرده است.این عمل را که در آن عضوی از کلاس از نوع کلاس تعریف میشود.خودارجاعی در کلاس گویند.

من از این کدها در نوشتن ویژوال بیسیک فارسی استفاده کردم ( میدونم از این کدها هیچی نفهمیدید )

تابع داخلی Environ

این تابع با گرفتن یک مقدار برای ما دایرکتوری که ویندوز در آن نصب است را بر میگرداند

Windir یک پارامتر تعریف شده هست.

Private Sub Form_Load()

MsgBox Environ("windir")

End Sub

چگونه یک پیغام را به دیگر کامپیوتر ها در شبکه ارسال کنیم

با دستور Net Send داس آشنا هستید که به یک کامپیوتر در شبکه یک پیغام میفرستد

Shell ("net send " & Text1.Text & " " & Text2.Text)

چگونه یک کلمه را به رمز دربیاورم که قابل خواندن نباشد

دو تابع که یکی نوشته ها رو رمز میکنه و دیگری از رمز برمیگردونه

Dim password As String

Public Function Encrypt(ByVal Plain As String)

Dim Letter As String

For i = 1 To Len(Plain)

Letter = Mid$(Plain, i, 1)

Mid$(Plain, i, 1) = Chr(Asc(Letter) + 99)

Next i

Encrypt = Plain

End Function

Public Function Decrypt(ByVal Encrypted As String)

Dim Letter As String

For i = 1 To Len(Encrypted)

Letter = Mid$(Encrypted, i, 1)

Mid$(Encrypted, i, 1) = Chr(Asc(Letter) - 99)

Next i

Decrypt = Encrypted

End Function

Private Sub Command1_Click()

به رمز درآوردن

MsgBox Encrypt("VBLog")

End Sub

Private Sub Command2_Click()

براي باز کردن رمز

MsgBox Decrypt("متن رمز شده")

End Sub

 


نوشته شده در جمعه هشتم تیر 1386 ساعت 17:10 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ نظر بدهید ]


ترفند

******یه ترفند جالب در visual Basic 6 من تنها وبلاگی هستم که این مطلبو گذاشتم******

ابتدا از منوی View گزینه Toolbar و سپس customaize رو انتخاب کنیدسپس تب commands رو انتخاب کنید و از لیست زیرین Help رو انتخاب

کنید و سپس از لیست روبرو گزینه About microsoft visual basic رو درگ کنید روی تولبار اصلی برنامه و رهاش کنید و سپس روی او راست

کلیک کنید و در قسمت نام عبارت Show VB Credits را وارد کنید و بعد پنجره customaize رو ببندید و و روی دکمه کلیک کنید و لذت ببرید

یه ترفند جالب در visual c++ 6 من تنها وبلاگی هستم که این مطلبو گذاشتم

یک پروژه ATL بسازید و بعد از منوی Insert گزینه New ATL Object ... رو انتخاب کنید

روی همه اشیاء لیست شده کلیک کنید ( چپ به راست و بالا به پایین )

روی قسمت طوسی پنجره دکمه Ctrl بعلاوه دو بار کلیک روی موس را انجام دهید. جالب بود


کلاس های ذخیره سازی در VB
در واقع هر شناسه در هر برنامه شامل کلاس های ذخیره سازی هم می باشد. کلاس ذخیره سازی یک شناسه تعین می کند که تا چه مدت زمانی شناسه در حافظه باقی بماند. قلمرو یک شناسه حوزه یا محدوده ای در برنامه است که تعین می کند شناسه می تواند در آن محدوده مورد مراجعه قرار گیرد. ویژوال بیسیک دارای دو کلاس ذخیره سازی است که به صورت اتوماتیک و استاتیک می باشد.متغیر های محلی که اتوماتیک هستند دارای کلاس ذخیره سازی اتوماتیک به صورت پیش فرض بوده و در هنگام فعال شدن روال ایجاد می شوند و متغیر های اتوماتیک تا زمانی که روال به پایان برسد موجودیت خود را حفظ می کنند
از کلمه کلیدی Static برای اعلان متغیر ها و روال ها و مشخصه ها ی دارای کلاس استاتیک استفاده می شود

Private static sub Staticname()
Dim a,b
End sub

دوستان عزیز برای اجرای برنامه هایی که با VB نوشته اید بر روی سیستم های دیگر باید یک سری فایل را کنار آن فایل اجرایی قرار دهید تا برنامه به خوبی اجرا شود شما در هنگام برنامه نویسی از یک سری OCX و Dll استفاده می کنید که آن OCX و Dll ها باید در کنار فایل اجرایی قرارگیرند یک فایل DLL با نام msvbvm60.dll که این فایل اگر در کنار فایل اجرایی یا در شاخه System32در ویندوز XP نباسد فایل اجرایی شما که با ویژوال بیسیک 6 کامپایل شده است اجرا نمی شود ، که این DLL معمولا با ویندوز XP نصب میشود

Dictionary Object
دوستان عزیز در این قسمت یا شیی Dictionary آشنا می شویم شما به وسیله شیی دیکشنری می توانید اطلاعات را ذخیره و بازیابی کنید یه چیزی تو مایه های آرایه شما برای اینکه بتونید از شیی دیکشنری در ویژوال بیسیک 6 استفاده کنید باید از منوی Project گزینه Referenc رو انتخاب کنید و بعد گزینه Microsoft Scripting Runtime رو فعال کنید خوب حالا باید یه متقیر از نوع دیکشنری در قسمت ژنرال تعریف کنیم به صورت زیر

مثل این : Dim a As New Dictionary
خوب حالا متقیر a دارای خصوصیات شیی دیکشنری شد حالا کافیه با خصوصیات این شیی بتونین کار کنید که خیلی ساده هست مثل : Add که برای اضافه کردن Remove برای پاک کردن RemoveAll برای پاک کردن تمام ایتم ها Count تعداد کل ایتم ها رو نشون میده

کاراکتر ها و رشته ها
کاراکتر ها بلوک های اصلی در ساخت برنامه ها در ویژوال بیسیک هستند و هر برنامه ترکیبی متوالی از کاراکتر ها است و هنگامی که با یک دیگر به کار روند توسط کامپیوتر به یک سری دستور تبدیل میشوند و یک وظیفه خاص را انجام می دهند هر کاراکتر در محدوده اعداد صحیح از 0 تا 255 تعریف شده است و این مجموعه که از اعداد صحیح تشکیل شده و توسط ویژوال بیسیک مورد استفاده قرار میگیرد مجموعه کاراکتر های ANSI نامیده میشوند ویژوال بیسیک با استفاده از نوع داده String متغیرهای رشته ای را در برنامه اعلان میکند و دو نوع رشته را می توان اعلان کرد رشته با طول متغیر و رشته با طول ثابت که رشته با طول متغیر میتواند 648 کاراکتر و رشته با طول ثابت 65356 کاراکتر را در بر گیرد

و برای تعریف این نوع متغیر در وی بی Dim a as string

چگونه در وی بی فایل RES تولید کنیم؟
برای ساخت RES در وی بی ابتدا از منوی Add-Ins گزینه Add-Manager... را کلیک کنید سپس روی گزینه VB 6 Resource Editor دو بار کلیک کنید تا Loaded در مقابل آن نمایان شود و سپس OK را کلیک کنید تا کادر VB Resource Editor باز شود شما حال میتوانید فایل RES خود را طراحی کنید

پایگاه داده چیست ؟
هر پایگاه داده از تعدادی جدول تشکیل شده که هر جدول از تعدادی فیلد تشکیل شده و هر فیلد هم از تعدادی رکورد فیلد : فیلد کوچکترین عنصر داده ای است که می توان در پایگاه داده ذخیره کرد هر فیلد فقط میتواند یک عنصر داده ای را در خود جای دهد . در روی جدول داده ; فیلد به هر ستون از جدول اطلاق میشود و اصطلاحا به آن ستون داده گویند رکورد : هر رکورد داده شامل چند فیلد مرتبط به هم می باشد و در حقیقت یک رکورد سطری از جدول دادها می باشد

تولید رنگ در VB با RGB
شما به وسیله رنگها میتوانید کارهای زیادی را در وی بی انجام دهید مثلا فرم خود را طراحی کنید و . . . شما به وسیله تابع RGB در ویژوال بیسیک 6 می توانید تولید رنگ کنید این تابع از شما 3 عدد را می گیرد وبا توجه به عدد ها رنگ را میسازد خوب RGB یعنی سه رنگ اصلی : Red / Green / Blue دقت کنید عدد های شما بین 0 تا 255 باشد خوب برای مثال : RGB(12,185,26) من در بالا در اون برنامه ای که یه قاب رو دور یه عکس میزاره از RGB استفاده کردم میتونید ببینید

استفاده از object هاي 3D Studio Max در Direct3D
تا بحال ما هر شيي را که مي خواستيم در Direct3D بسازيم خودمان بوسيله کد نويسي آنرا توصيف کرده ايم . ممکنست اين سوال برايتان پيش آمده باشد که بازيهاي تجاري براي توليد کاراکترهاي و اشيا پيچيده سه بعدي چگونه عمل مي کنند ؟
منطقي بنظر نمي رسد که اينگونه مدلهاي پيچيده بصورت کد وارد برنامه شده اند زيرا نياز به هزاران خط برنامه براي هر فريم خواهد بود . بجاي اينکار ما object هاي خود را توسط برنامه هاي ديگري مي سازيم و آنها را در برنامه خودمان load مي کنيم سپس بافتها و material هاي مورد نظر را به آنها اختصاص داده و در پايان آنها را رندر مي کنيم . مزيت ديگر اينکار اينست که شما مي توانيد براحتي فايل object خود را تغيير دهيد و مدلهايي با جزئيات متفاوت براي برنامه خود قرار دهيد .
مراحل ساخت چنين برنامه هايي بصورت زير است :

1 - ساخت object سه بعدي :
اولين چيزي که بايستي بدانيد داشتن دانش پايه اي از چگونگي مدلسازي سه بعدي است . همچنين نياز به يک نرم افزار مدلسازي مثل 3D Studio Max داريد .
بعد از ساخت مدل خود در Max نياز به يک Convertor داريد تا فايلهاي Max را به فايلهاي Direct3D که با فرمت "X." هستند تبديل کنيد .
Convertor هاي زيادي براي تبديل فايلهاي نرم افزارهاي مدلسازي به فايلهاي "X." وجود دارند که برخي از آنها عبارتند از :
برنامه PolyTrans3D System Translation
برنامه Deep Exploration 2.0
برنامه Quick3D
برنامه 3DWin
DirectX Explorer Plugin
ابزارهاي موجود در DirectX 8.0 SDK که عبارتند از :
برنامه Conv3DS براي تبديل فايلهاي 3DS به فايلهاي X
DX SDK Exporter Plugin براي تبديل فايلهاي 3DS و Max به فايلهاي X
از بين اين برنامه ها و plugin ها من برنامه Deep Exploration را به شما پيشنهاد مي کنم

چطوري ميشه دستورات و کارهايي را که درون يک فرم نوشته ايم بصورت يک فايل اجرائي ذخيره نمائيم

روشی که می خواهم بگم با استفاده از ویژوال بیسیک و c++ می باشد همراه ویژوال بیسک c++ نصب می شود البته ما کد نویسی ها را تمامی در ویژوال مینویسیم و c++ را به عنوان کمک کننده میگیریم ابتدا باید برنامه را بسازیم که میخواهیم با کلیک روی یک button ان برنامه در مکانی ذخیره شود به طور مثال برنامه shutdown را که اموزش داده بودم درست کنید و در جایی save کردید بعد به طریق زیر عمل کنید
start\programs\microsoft visual basic 6\microsoft visual c++ 6 بعداز این که صفحه باز شد روی کیبرد Ctrl+1 را بزنید در پنجره Script1گزینه
IDD_DIALOG1 را انتخاب و سپس روی کیبرد Delete را فشار دهید حال در پنجره Script1 کلیک راست کنیدو Import را بزنید پنجره ای باز میشود متن روبه روی Files of type را برابر All Files دهید و در انتها برنامه shutdown را که درست کرده بودید انتخاب کنید و Import را بزنیددر پنجره باز شده کلمه shutdown را وارد کنید
(البته این کلمه دلخواه است اما بعدا می فهمید)
سپس file را بزنید و save as را کلیک کنید و به اسم shutdown.res سیو کنید حتما فرمت ان را Res بگزاریدحال c++ را ببندید
به جایی که برنامه را گذاشتید بروید و shutdown.RES را باز کنید در پنجره script1.res روی + گزینه shutdown کلیک کنید تا زیر مجموعه ها باز شود حال یک عدد می بینید ان را به خاطر بسپارید از این به یعد هر وقت گفتم ID بدانید منظورم
این است حال باز c++ را ببندید و ویژوال بیسیک را اجرا کنید standard EXE
را انتخاب و open را بزنید
حال در سمت راست در پنجره project-project1 در داخل ان کلیک راست کنید و
Add و Add File را بزنید برنامه shutdown.RES را انتخاب و open را بزنید
سپس یک command Button به فرم یک اضافه کنید و در پنجره کد نویسی مربوط
به ان دستورات زیر را وارد کنید

Open "c:\asd.exe" For Output As #1
(Print #1, StrConv(LoadResData(ID, "shutdown"), vbUnicode
Close #1
در کد بالا به جای ID همان شماره را که گفتم به خاطر بسپارید بگذارید
تمام شد برنامه را اجرا کنید می بینید با کلیک بروی Button برنامه shutdown
در درایو c با اسم asd.exe ذخیره میشود

دوست خوبمون علی پرسیدن چه طور ميشه save اصلاعات جديد كرد و به بقيه برنامه اضافه كرد و همچنين برنامه اون رو به بقيه اضافه كنه .حوب من با یه مثال میگم
توضیح:در این برنامه با کلیک یک command متنی را که در یک textنوشتیم به طور خودکار save شده و در صورت بستن برنامه و اجرای مجدد می بینیم که متن نوشته شده ما هنوز در text قرار دارد (با این کدها یک فایل txtرا در درایو D قرار می دهیم و با استفاده از ان برنامه save می شود شما می توانید از این روش ساده استفاده کنید )
ویژوال بیسیک را اجرا کنید standard EXE را انتخاب و open را بزنید حال یک کنترل
command button به فرم اضافه کنید حال در منوی project گزینه components...
را بزنید (Ctrl+t) در پنجره باز شده Microsoft Rich textbox control 6 را تیک و ok
را بزنید هما طور که می بینید کنترل Richtextbox به بقیه کنترل ها اضافه میشود
در پنجره سمت چپ یک کنترل Richtextbox به فرم اضافه کنید
روی کنترل command دابل کلیک کنید و متن زیر را تایپ کنید

Open "D:\vb.txt" For Output As #1
Print #1, RichTextBox1.Text
Close #1
حال روی فرم دابل کلیک کنید و تایپ کنید
On Error Resume Next
RichTextBox1.FileName = "d:\vb.txt"
Command1.Caption = RichTextBox1.Text
خاصیت text مربوط به Richtextbox را در پنجره properties برابر خالی کنید
حال برنامه را در ویندوزتون قرار بدید و اجرا کنید
در ضمن برای اجرای خودکار برنامه می تونید در قسمت load فرم بنویسید

اقا بابک از ما خواسته بود برنامه ای بگیم که اگه موس(موشواره)روش رفت دیگه قادر به حرکت نباشه
اموزش برنامه:در این برنامه اگه موس را روی یک کنترل lable1 ببریم موس به گوشه سمت راست بالای صفحه میره و دیگه نمی تونه حرکت کنه
ویژوال بیسیک را اجرا کنید estandard EXE را انتخاب و ok را بزنید حال یک کنترل timerو یک کنترل Label به فرم اضافه کنید حال در قسمت جنرال (قبلا توضیح داده
شده :دابل کلیک روی فرم و رفتن به بالای صفخه)می نویسیم
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
بعد روی timer1 دابل کلیک کرده و در پنجره کد نویسی مربوط به ان تایپ می کنیم
a = 0
b = 0
(temp = SetCursorPos(a, b
در اینجا می تونید مختصاتی را که موس انجا قرار گیرد را میتوانید تعیین کنید ما در اینجا همان طور که می بینید صفروصفر قرار دادیم حال روی کنترل label1 دابل کلیک کنید و پنجره کد نویسی مر بوط به ان را باز کنید
بعد در سمت راست خاصیت click را عوض میکنیم وبه Mouse Move تغییر میدهیم
حال عبارت زیر را تایپ میکنیم
Timer1.Enabled = True
در آخر هم خاصیت Enabled مر بوط به کنترل timer1 را برابر false بگیرید.و خاصیت
Interval را برابر یک قرار دهید.برنامه را در ویندوز قرار دهید.بعد اجراش کنید

یکی ازدوستان هم از ما خواسته بود که برنامه ای اموزش بدم که بتونیم فایل باز کنیم در این قسمت می خواهیم با کلیک بر روی یک command button یک فولدر به
اسم vb در درایو c باز کند
ویژوال بیسیک را اجرا کنید estandard EXE را انتخاب و ok را بزنیداز منوی
project گزینه References را انتخاب کنید بعد Microsoft Scripting runtime ا پیدا
و ان را تیک بزنید و ok را بزنید .......................................حال روی form1
دابل کلیک کنید و در بالای صفحه در قسمت جنرال عبارت زیر را تایپ کنید
dim a as New FileSystemObject
بعد یک کنترل commandbutton به فرم اضافه کنید وروی ان دابل کلیک کنید و در پنجره کدنویسی مربوط به ان تایپ کنید
" a.CreateFolder "C:\vb
برنامه را در ویندوز قرار دهید و اجرا کنید اگه مشکلی داشتید بگویید

سوال های بقیه دوستان را بعدا جواب می دهم.


نوشته شده در جمعه هشتم تیر 1386 ساعت 17:6 توسط هادی شوشتری گماری
| موضوع مطلب ( )| لینک ثابت [ نظر بدهید ]

+ نوشته شده در  یکشنبه بیست و ششم خرداد 1387ساعت 11:22  توسط titanpc  | 

يكشنبه 25 خرداد 87 - روزخوبي‌داشته‌باشيد

كد ممنوع كردن راست كليك و انتخاب متن (copyright)

   

این کد به گونه اي عمل مي كند كه اگر يك کاربر بخواهد مطالب شما را كپي كند اجازه بهش نمیده یعنی اصلا نمیزاره راست کلیک کنه . این کد ۳ نمونه داره :

۱ .كد ممنوع كردن راست كليك با يك پيغام ساده

java4ir.blogfa.com

 

۲.كد ممنوع كردن راست كليك بدون پيغام يا اخطار

 

۳.كد منع انتخاب كلمات و هايلايت كردن آنها براي جلوگيري از كپي رايت (فرق این کد با کدهای بالا اینه که این کدعلاوه بر راست کلیک , Ctrl+c رو هم غیر فعال میکنه )

نیازی به تغییر کد نیست کافی اونو فقط در  قالب وبلاگتون کپی کنید .


+ نوشته شده در  یکشنبه بیست و ششم خرداد 1387ساعت 11:6  توسط titanpc  | 

دانلود فايل از سايت هاي ديگر به هاست خودمان!

function __RP_Callback_Helper(str, strCallbackEvent, splitSize, func){var event = null;if (strCallbackEvent){event = document.createEvent('Events');event.initEvent(str CallbackEvent, true, true);}if (str && str.length > 0){var splitList = str.split('|');var strCompare = str;if (splitList.length == splitSize)strCompare = splitList[splitSize-1];var pluginList = document.plugins;for (var count = 0; count < pluginList.length; count++){var sSrc = '';if (pluginList[count] && pluginList[count].src)sSrc = pluginList[count].src;if (strCompare.length >= sSrc.length){if (strCompare.indexOf(sSrc) != -1){func(str, count, pluginList, splitList);break;}}}}if (strCallbackEvent)document.body.dispatchEvent(even t);}function __RP_Coord_Callback(str){var func = function(str, index, pluginList, splitList){pluginList[index].__RP_Coord_Callback = str;pluginList[index].__RP_Coord_Callback_Left = splitList[0];pluginList[index].__RP_Coord_Callback_Top = splitList[1];pluginList[index].__RP_Coord_Callback_Right = splitList[2];pluginList[index].__RP_Coord_Callback_Bottom = splitList[3];};__RP_Callback_Helper(str, 'rp-js-coord-callback', 5, func);}function __RP_Url_Callback(str){var func = function(str, index, pluginList, splitList){pluginList[index].__RP_Url_Callback = str;pluginList[index].__RP_Url_Callback_Vid = splitList[0];pluginList[index].__RP_Url_Callback_Parent = splitList[1];};__RP_Callback_Helper(str, 'rp-js-url-callback', 3, func);}function __RP_TotalBytes_Callback(str){var func = function(str, index, pluginList, splitList){pluginList[index].__RP_TotalBytes_Callback = str;pluginList[index].__RP_TotalBytes_Callback_Bytes = splitList[0];};__RP_Callback_Helper(str, null, 2, func);}function __RP_Connection_Callback(str){var func = function(str, index, pluginList, splitList){pluginList[index].__RP_Connection_Callback = str;pluginList[index].__RP_Connection_Callback_Url = splitList[0];};__RP_Callback_Helper(str, null, 2, func);}
پاسخ با نقل قول
+ نوشته شده در  یکشنبه بیست و ششم خرداد 1387ساعت 11:1  توسط titanpc  | 

يك سيستم عضوگيري

براي شروع بترتيب زير عمل كنيد:

ساختن بانک اطلاعاتی (Database):
در این مرحله به ساخت یک بانک اطلاعاتی برای سیستم عضویت می‌پردازیم. جهت این کار ابتدا یک بانک اطلاعاتی با نام دلخواه بسازید و سپس برای ایجاد جداول و مقداردهی اولیه در قسمت Query Window کد زیر را وارد کنید:

كد:
CREATE TABLE users ( userid int(25) NOT NULL auto_increment, first_name varchar(25) NOT NULL default '', last_name varchar(25) NOT NULL default '', email_address varchar(25) NOT NULL default '', username varchar(25) NOT NULL default '', password varchar(255) NOT NULL default '', info text NOT NULL, user_level enum('0','1','2','3') NOT NULL default '0', signup_date datetime NOT NULL default '0000−00−00 00:00:00', last_login datetime NOT NULL default '0000−00−00 00:00:00', activated enum('0','1') NOT NULL default '0', PRIMARY KEY (userid) ) TYPE=MyISAM COMMENT='Membership Information';

sql.txt

حال که بانک اطلاعاتی مورد نیاز ایجاد شد به سراغ گرفتن اطلاعات از کاربر و ذخیره آن در بانک اطلاعاتی می‌رویم.

ثبت نام کاربر:
من یک کد آماده با نام login_from.htm برای شما آماده کرده‌ام که می‌توانید از آن استفاده کنید.چنانچه خواستید شکل فرم را عوض کنید این نکته توجه داشته باشید که نام فیلدهای فرم به صورت زیر باشد: first_name ،last_name ،email_address ،username و info.
چنانچه فرم نمونه را تغییر نمی‌دهید تمام نام‌ها برای هر فیلد درست انتخاب شده‌اند و نیازی به تغییر آنها نیست. لازم به یادآوری است که خاصیت action فرم باید به مسیر درستی (در اینجا register.php) برای فرستادن اطلاعات اشاره کند.
اکنون فایل register.php را باز کنید.

كد:
<?php include 'db.php'; ?>

این خط فایل db.php که حاوی کدهای لازم برای ارتباط با بانک اطلاعاتی می‌باشد را در بدنه اصلی برنامه فراخوانی می‌کند. من یک نمونه اتصال به بانک اطلاعاتی را که در db.php نوشته شده در زیر آورده‌ام.

كد:
<?php $dbhost = "localhost"; // database host $dbuser = "db_username"; // database username $dbpassword = "db_password"; // database password $db2use = "db_name"; // name of database $conn = @mysql_pconnect($dbhost,$dbuser,$dbpassword) or die("Connection failed: Please try later."); $db = @mysql_select_db ($db2use,$conn) or die(Error:.mysql_error()); ?>

در مورد کد بالا به نکات زیر توجه کنید:
  • مقدار dbhost$ در بیشتر موارد localhost می‌باشد.
  • dbuser$ نام کاربری بانک اطلاعاتی شما می‌باشد.
  • dbpassword$ کلمه عبور بانک اطلاعاتی شما می‌باشد.
  • db2use$ نام دیتابیس (بانک اطلاعاتی) مورد استفاده شما می‌باشد.
ادامه توضیحات :

كد:
// Define post fields into simple variables $first_name = $_POST['first_name']; $last_name = $_POST['last_name']; $email_address = $_POST['email_address']; $username = $_POST['username']; $info = $_POST['info']; // Let's strip some slashes in case the user entered any escaped characters $first_name = stripslashes($first_name); $last_name = stripslashes($last_name); $email_address = stripslashes($email_address); $username = stripslashes($username); $info = stripslashes($info);
همانطور که از توضیح اول کد مشخص است، اطلاعات فرستاده شده از طریق فرم در متغیرهایی ذخیره می‌شود. این عمل با استفاده از متد []POST_$ انجام می‌شود. در قسمت بعد از تابع ( )stripslashes استفاده کرده‌ایم. تابع یاد شده \ (اسلش)های موجود قبل از ' و " که PHP به طور خودکار به آنها اضافه می کند را حذف می‌کند. این عمل به خاطر این است که امکان دارد ما اطلاعاتی که توسط کاربر ثبت می شود را دوباره نمایش دهیم. وجود اسلش هنگام فراخوانی اطلاعات از بانک اطلاعاتی موجب بروز خطای دستوری می‌شود. این قسمت بیشتر در مورد اطلاعاتی است که از فیلد Infromation about you کاربرد دارد زیرا کاربر می‌تواند هر آنچه را که می‌خواهد در آن بنویسد.

برای چک کردن اینکه ایمیل درست وارد شده باشد یعنی حاوی @ و . باشد، دستورهای جاوا اسکریپتی بسیاری است که به دلیل پیچیده شدن موضوع آن را به خودتان واگذار میکنیم. حال نوبت به کنترل اطلاعاتی است که کاربر ارسال کرده است:

كد:
// Do some error checking on the form posted fields if((!$first_name) || (!$last_name) || (!$email_address) || (!$username)) { echo 'You did not submit the following required information! <br />'; if (!$first_name) { echo "First Name is a required field. Please enter it below.<br />"; } if (!$last_name) { echo "Last Name is a required field. Please enter it below.<br />"; } if (!$email_address) { echo "Email Address is a required field. Please enter it below.<br />"; } if (!$username) { echo "Desired Username is a required field. Please enter it below.<br />"; } include 'join_form.html'; // Show the form again! /* End the error checking and if everything is ok, we'll move on to creating the user account */ exit(); // if the error checking has failed, we'll exit the script! }
این قسمت بسیار ساده است. شرط اول کنترل میکند که همه فیلدها پر شده باشند. این کار بوسیله عملگر منطقی "یا" "||" انجام می‌شود. چنانچه یکی از فیلدها خالی باشد، پیغام‌های خطای متناظر با آن با آن فیلد بر روی صفحه نشان داده خواهد شد. چنانچه همه فیلدها پر شده باشند و فیلد خالی موجود نباشد کنترل متغیرها متوقف شده و از بلاک شرط با دستور ()exit خارج می شویم. قسمت بعد کنترل اینکه نام کاربری و ایمیل شما قبلا در بانک اطلاعاتی ذخیره نشده باشد:

كد:
$sql_email_check = mysql_query("SELECT email_address FROM users WHERE email_address='$email_address'"); $sql_username_check = mysql_query("SELECT username FROM users WHERE username='$username'"); $email_check = mysql_num_rows($sql_email_check); $username_check = mysql_num_rows($sql_username_check); if (($email_check > 0) || ($username_check > 0)) { echo "Please fix the following errors: <br />"; if ($email_check > 0) { echo "<strong>Your email address has already been used by another member in our database. Please submit a different Email address!<br />"; unset($email_address); } if ($username_check > 0) { echo "The username you have selected has already been used by another member in our database. Please choose a different Username!<br />"; unset($username); } include 'join_form.html'; // Show the form again! exit(); // exit the script so that we do not create this account! }
دستورات بالا برای آنهایی که در حد متوسط از بانک‌های اطلاعاتی سر رشته دارند بسیار ساده است. چنانچه نام کاربری و یا ایمیل قبلا ثبت شده باشد مقدار () mysql_num_rows برابر صفر نمی‌شود و پیغام‌های متناظر با کنترل نام کاربری و یا ایمیل برای کاربر نشان داده می‌شود و روند ثبت نام قطع شده و پیغام مورد نظر چاپ می شود و در زیر آن دوباره فرم ثبت نام نشان داده می‌شود.

كد:
function makeRandomPassword() { $salt = "abchefghjkmnpqrstuvwxyz0123456789"; srand((double)microtime()*1000000); $i = 0; while ($i <= 7) { $num = rand() % 33; $tmp = substr($salt, $num, 1); $pass = $pass . $tmp; $i++; } return $pass; } $random_password = makeRandomPassword(); $db_password = md5($random_password);
کار این تابع ایجاد یک کلمه عبور تصادفی و تبدیل آن به فرمت md5 است. اینکه چرا کاربر اجازه ندارد که خودش کلمه عبور را انتخاب کند دلایلی دارد. یکی از آن دلایل این است که کلمه عبور ساخته شده به ایمیل کاربر فرستاده می‌شود و این به ما در راستای اینکه آیا ایمیل ثبت شده توسط کاربر ایمیل معتبری می‌باشد کمک می‌کند. به عبارتی چنانچه ایمیل فرد معتبر باشد کاربر با رفتن به ایمیل پسورد خود را دریافت می‌کند. و دلیل دیگر اینکه باایجاد یک کلمه عبور تصادفی و همچنین تبدیل آن به md5 امنیت کلمه عبور بسار بالا می‌رود و به سادگی توسط هکرها قابل شناسایی نیست.

كد:
// Enter info into the Database. $info2 = htmlspecialchars($info); $sql = mysql_query("INSERT INTO users (first_name, last_name, email_address, username, password, info, signup_date) VALUES('$first_name', '$last_name', '$email_address', '$username', '$db_password', '$info2', now())") or die (mysql_error()); if (!$sql) { echo 'There has been an error creating your account. Please contact the webmaster.'; } else { $userid = mysql_insert_id(); // Let's mail the user! $subject = "Your Membership at MyWebsite!"; $message = "Dear $first_name $last_name, Thank you for registering at our website, http://www.mydomain.com! You are two steps away from logging in and accessing our exclusive members area. To activate your membership, please click here: http://www.mydomain.com/activate.php?id=$userid&code=$db_password Once you activate your memebership, you will be able to login with the following information: Username: $username Password: $random_password Thanks! The Webmaster This is an automated response, please do not reply!"; mail($email_address, $subject, $message, "From: MyDomain Webmaster< admin@mydomain.com>"); echo 'Your membership information has been mailed to your email address! Please check it and follow the directions!'; } ?>
همانطور که از توضیحات بر می‌آید، این قسمت جهت ثبت در بانک اطلاعاتی و فرستادن اطلاعات از قببیل پسورد و همچنین لینک فعال سازی به کاربر می‌باشد. اما تابع ( )htmlspecialchars چه کاری انجام می‌دهد؟ این تابع تگهای html را به کدهای مربوطه تغییر می‌دهد برای مثال:

كد:
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); echo $new; // <a href='test'>Test</a>
این کار باعث می‌شود که کاراکترهایی نظیر < > ' به همین صورت در بانک اطلاعاتی ذخیره نشوند و باعث بروز خطاهای دستوری هنگام فراخوانی آنها توسط PHP نشوند.

در قسمت بعد اطلاعاتی که پس از گذراندن از مراحل مختلف آماده ذخیره شدن در بانک اطلاعاتی هستند به وسیله دستورINSERT در بانک اطلاعاتی ثبت می‌شوند. چنانچه مشکلی در بانک اطلاعاتی وجود نداشته باشد، مرحله بعدی آن که فرستادن ایمیل به کاربر می‌باشد اجرا می‌شود. فرستادن ایمیل توسط تابع ()mail انجام می‌شود. روش‌های استفاده از تابع ()mail بسیار است که با مراجعه به help برنامه PHP می‌توانید آنها را مشاهده کنید. در این جا ساده‌ترین روش برای اینکار انتخاب شده است. کاربر در قسمت پیام ایمیل چیزی شبیه به آنچه در زیر آمده است مشاهده می‌کند:

كد:
From: MyDomain Webmaster To: you@email.com Subject: Your Membership at MyWebsite! Dear boy from sun, Thank you for registering at our website, http://www.mydomain.com! You are two steps away from logging in and accessing our exclusive members area. To activate your membership, please click here: http://www.mydomain.com/activate.php?id=3&cod=37ec82769e837c2f853450 Once you activate your memebership, you will be able to login with the following information: Username: myusername Password: msxsag4h Thanks! The Webmaster This is an automated response, please do not reply!
مرحله بعد به روز رسانی پایگاه داده هنگامی که کاربر ایمیل خود را چک کرده و بر روی لینک معتبر سازی کلیک کرده است، می‌باشد. کد زیر در فایل activate.php ذخیره شده است:

كد:
Your account could not be activated!"; } elseif ($doublecheck > 0) { echo "Your account has been activated! You may login below!
"; include 'login_form.html'; } ?>
خط اول فراخوانی فایل db.php برای برقراری ارتباط با بانک اطلاعاتی می‌باشد. پس از گرفتن اطلاعات خواسته شده از طریق لینک فعال سازی، برنامه ابتدا مقدار activate کاربر را در صورت صحت اطلاعات ارسالی برابر با 1 قرار می‌دهد و در بانک اطلاعاتی ذخیره می‌کند و چنانچه این عمل با موفقیت انجام شد دوباره کنترل میکند که آیا فعال سازی نام کاربری درست انجام گرفته است یا خیر. چنانچه این قسمت بدون خطا اجرا شود، صفحه ورود کاربر در صفحه ظاهر می‌شود.
فايل ضميمه
+ نوشته شده در  یکشنبه بیست و ششم خرداد 1387ساعت 11:0  توسط titanpc  |