# زبان های اسکریپتی > Classic ASP > سوال: اتصال asp به پایگاه داده در access

## ahmadkavand

سلام
من هیچ کس نتونسته کمکم کنه.
آخه می خواستم برنامه asp رو به پایگاه داده اتصال بدم.ولی همش به مشکل می خورم
تو رو خدا کمکم کنید
دیگه دیوونه شدم.
این فایل html  من هست.
<HTML>
<HEAD><TITLE>Login</TITLE></HEAD>
<BODY>
<form method="post" action=" 1.asp ">
First Name: <input type="text" name="Name" size="20"><br>
Last Name : <input type="text" name="familly" size="20"><br>
<input type="submit" value="Send">
</form>
</BODY>
</HTML>


می خواستم شما فایلASP رو برام بنویسید تا بتونم داده هام رو از این فایل  HTML  توی یه بانک که مثلا توی درایو C  هست نشون بده.
کمکم کنید

----------


## aryaei2000

برای اتصال به بانک اطلاعاتی اکسس شما به موارد زیر نیاز دارید:
1.فایلی جهت ذخیره مسیر و نام بانک اطلاعاتی config
2.دسترسی write , delete و read 
3.موتور پردازشگر asp که بوسیله فایل config  به بانک اطلاعاتی متصل شود و عملیات لازم را انجام دهد.

فایل config.asp

<%
'تعریف متغیرها
Dim strConn, ObjCon
'فعال کردن بافر
Response.Buffer = True
'### CONNECTION STRINGS CONFIGURATION ###
'تعریف چند متغیر  
tablpfx = "tbl"
dbFldr = "../db/"  
  'تعریف نام بانک اطلاعاتی و مسیر دهی  
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
                    strConn = strConn & Server.MapPath(dbFldr & "dbname.mdb") & ";"
                    
        Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.CursorLocation = 3
        objConn.open strConn
%>
2.نحوه تعریف دسترسی ها در ویندوز:
https://barnamenevis.org/showthread.php?t=21245
3.موتور پردازشگر:

<!--#include virtual="config.asp"-->
<%
'اطمینان از عدم وجود مشکل برنامه نویسی
If Err.Number <> 0 then
    Response.Write "<font face='verdana' size='2'><br><b>The Error has occured!</b>"
    Response.Write "<br><br>Page: <b>config/config.asp</b>"
    Response.Write "<br><br>Error Number: <b>" & err.number & "</b>"
    Response.Write "<br><br>Error Description: <b>" & err.description & "</b>" 
    Response.End
End If
'چک کردن نوع درخواست فرم و اطمینان از مساوی بودن آن با مقدارpost (دقت کنید که در هر دو طرف تساوی از حروف کوچک استفاده شده) 
If lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" then
  Fname = Sq(Request.Form("Name"))
  Lname = Sq(Request.Form("Family"))
'اتصال به بانک اطلاعاتی و وارد کردن مقادیر  
  strsql = "INSERT INTO " & tablPfx & "[tablename] (Fname, Lname) values ('" & Fname & "', '" & Lnname & "');"
   ObjCon.Execute(strsql)
End If

'فیلتر کردن کوتیشن برای جلوگیری از اینجکشن
Function Sq(Inputstr)
 Inputstr = Replace(Inputstr, "'", "''")
End Finction
%>

----------


## ahmadkavand

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

----------


## shavak

با سلام اگه خواستی یه توضیح کامل بدی با این ایمیل ارتباط  برقرار کن من یه سورس کامل با توضیحات برات بفرستم داداش ما مخلص هرچی برنامه نویس هستیم اخه هرکاری بکینم واسه ایران عزیز مونه
منتظرم iran_arman_m@yahoo.com

----------


## ahmadkavand

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

----------


## aryaei2000

بالای هر خط نوشتم.
موارد قرمز رنگ رو باید بر اساس مقادیر خودتون تغییر بدید.
موفق باشید.

----------


## ahmadkavand

سلام
مرسی الان میرم کار میکنم
یه سوال دیگه هم داشتم
*2.نحوه تعریف دسترسی ها در ویندوز رو برام یه توضیح بدید
ممنون

----------


## ahmadkavand

سلام
خط هشتم error میده
من جایی رو که باید پر می کردم،پر کردم

<%
Dim strConn, ObjCon
Response.Buffer = True
tablpfx = "tbl"
dbFldr = "C:\Inetpub\wwwroot\db1.mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
                    strConn = strConn & Server.MapPath(dbFldr & "db1.mdb") & ";"
Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.CursorLocation = 3
        objConn.open strConn
%>
<%
If Err.Number <> 0 then
    Response.Write "<font face='verdana' size='2'><br><b>The Error has occured!</b>"
    Response.Write "<br><br>Page: <b>config/config.asp</b>"
    Response.Write "<br><br>Error Number: <b>" & err.number & "</b>"
    Response.Write "<br><br>Error Description: <b>" & err.description & "</b>" 
    Response.End
End If

If lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" then
  Fname = Sq(Request.Form("Name"))
  Lname = Sq(Request.Form("Family"))

strsql = "INSERT INTO " & tablPfx & "[table1] (name, familly) values (' " & Fname & " ' ,  ' " & Lnname & " ');"
ObjCon.Execute(strsql)
End If

Function  Sq(Inputstr)
 Inputstr = Replace(Inputstr , " ' " , " ' ' " )
End Function
%>

بانک اطلاعاتی من اسمش db1 و دارای دوتا ستون name,familly هست.
توی آدرسC:\Inetpub\wwwroot\db1.mdb
اگه میشه خودتون هم بررسی کنید ببینید که کجاهای برنامه مشکل داره
ممنون.دستتون درد نکنه

----------


## aryaei2000

با سلام
شما در وارد کردن مسیر دچار اشتباه شدید.
اگر میخواهید مسیرتون بصورت :\C:\Inetpub\wwwroot\db1.mdb باشه باید در خط هفتم Server.MapPath
را بردارید و یا متغیر dbFldr رو بدون C:\Inetpub\wwwroot\ مقدار دهی کنید.

----------


## ahmadkavand

سلام مهندس خسته نباشی

طبق دستور 1 عمل کردم.یه error هم داشت که درستش کردم
ولی داده ها وارد بانک نمیشن.
توی فایلhtml داده هام رو وارد میکنم و send رو که میزنم، داده ها وارد جدول نمیشن یا اینکه داده ها رو وارد میکنم و بعد فایل asp رو اجرا میکنم،بازم داده ها وارد نمیشن


اینم برنامه اصلاح شده:



<%
Dim strConn, ObjCon
Response.Buffer = True
tablpfx = "tbl"
dbFldr = "C:\Inetpub\wwwroot\db1.mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strConn = strConn & (dbFldr ) & ";"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.CursorLocation = 3
objConn.open strConn
%>
<%
If Err.Number <> 0 then
Response.Write "<font face='verdana' size='2'><br><b>The Error has occured!</b>"
Response.Write "<br><br>Page: <b>config/config.asp</b>"
Response.Write "<br><br>Error Number: <b>" & err.number & "</b>"
Response.Write "<br><br>Error Description: <b>" & err.description & "</b>" 
Response.End
End If
If lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" then
Fname = Sq(Request.Form("Name"))
Lname = Sq(Request.Form("Family"))
strsql = "INSERT INTO " & tablPfx & "[table1] (name, familly) values (' " & Fname & " ' , ' " & Lnname & " ');"
ObjCon.Execute(strsql)
End If
Function Sq(Inputstr)
Inputstr = Replace(Inputstr , " ' " , " ' ' " )
End Function
%>


مرسی بدجور انداختمت تو زحمت.
دستت دردنکنه

----------


## aryaei2000

شما تو خط 23 باید کروشه های دور table1 رو برداری.

strsql = "INSERT INTO " & tablPfx & "table1 (name, familly) values ('" & Fname & "' , '" & Lnname & "');"

یه امتحان بکن ببین مشکل رفع شده یا نه.

----------


## ahmadkavand

سلام.خسته نباشید
بازم حل نشد.

دوباره دوتا فایل رو براتون می فرستم
html:
<HTML>
<HEAD><TITLE>Login</TITLE></HEAD>
<BODY>
<form method="post" action="config.asp" >
First Name: <input type="text" name="Name" size="20"><br>
Last Name : <input type="text" name="familly" size="20"><br>
<input type="submit" value="Send">
</form>
</BODY>
</HTML>



asp:

<%
Dim strConn, ObjCon
Response.Buffer = True
tablpfx = "tbl"
dbFldr = "C:\Inetpub\wwwroot\db1.mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strConn = strConn & (dbFldr ) & ";"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.CursorLocation = 3
objConn.open strConn
%>
<%
If Err.Number <> 0 then
Response.Write "<font face='verdana' size='2'><br><b>The Error has occured!</b>"
Response.Write "<br><br>Page: <b>config/config.asp</b>"
Response.Write "<br><br>Error Number: <b>" & err.number & "</b>"
Response.Write "<br><br>Error Description: <b>" & err.description & "</b>" 
Response.End
End If
If lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" then
Fname = Sq(Request.Form("Name"))
Lname = Sq(Request.Form("Family"))
strsql = "INSERT INTO " & tablPfx & " table1 (name, familly) values ('" & Fname & "' , '" & Lnname & "');"
ObjCon.Execute(strsql)
End If
Function Sq(Inputstr)
Inputstr = Replace(Inputstr , " ' " , " ' ' " )
End Function
%>

ببخشید. دستتون درد نکنه

----------


## aryaei2000

یه چند تا اشکال بود درست کردم.
asp

 
<%
Dim strConn, ObjCon
Response.Buffer = True
tablpfx = "tbl"
dbFldr = "C:\Inetpub\wwwroot\db1.mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strConn = strConn & (dbFldr ) & ";"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.CursorLocation = 3
objConn.open strConn
%>
<%
If Err.Number <> 0 then
Response.Write "<font face='verdana' size='2'><br><b>The Error has occured!</b>"
Response.Write "<br><br>Page: <b>config/config.asp</b>"
Response.Write "<br><br>Error Number: <b>" & err.number & "</b>"
Response.Write "<br><br>Error Description: <b>" & err.description & "</b>" 
Response.End
End If
If lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" then
Fname = Sq(Request.Form("Name"))
Lname = Sq(Request.Form("Family"))
strsql = "INSERT INTO " & tablPfx & "table1 (name, familly) values ('" & Fname & "' , '" & Lname & "');"
ObjCon.Execute(strsql)
End If
 
Function Sq(Inputstr)
Inputstr = Replace(Inputstr , " ' " , " ' ' " )
End Function
Set rs = Nothing
Set objConn = Nothing
%>

اگر نکات زیر رو رعایت کنید ممنون میشم.
1.از دادن پستهای بی محتوا خودداری کنید.
2.کدهاتون رو بین تگ code قرار بدید.
موفق باشید

----------


## ahmadkavand

سلام
بازم چیزی add نشد توی بانک

مرسی

----------


## aryaei2000

شما مطمئنید که مقادیر name و familly در بانک اطلاعاتی نیز با همین نام درج شده اند؟
ضمنا همونطور که گفتم دسترسی write ,read, delete با ید تعریف شده باشند.
این خطوط رو هم 

dbFldr = "C:\Inetpub\wwwroot\db1.mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strConn = strConn & (dbFldr ) & ";"

با این خطوط عوض کنید:


strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strConn = strConn & Server.MapPath("cldb.mdb") & ";"

----------


## ahmadkavand

سلام
این کار رو کردم ولی جواب نداد
این objConn.Mode = adModeReadWrite رو هم اضافه کردم ولی دوباره add نشد.
شما توی سیستمتون این برنامه کار می کنه

ممنون

----------


## ahmadkavand

ببخشید اگه تشکر های من 0 هست
نمی دونم چه جور این کار رو کنم(یعنی جلوی تشکرهام پر بشه)

----------


## ahmadkavand

بانک دوتا ستون داره
                         name        familly
با همین املا

----------


## aryaei2000

من همه اسامی رو بصورت مرجع در آوردم.
کار میکنه و مشکلی نداره.

----------


## ahmadkavand

سلام
خیلی رو برنامه فکر کردم، روش کار کردم ولی add نمی کنه

----------


## aryaei2000

مگه میشه؟
تو کامپیوتر من کار میکنه.
همونطور که گفتم شما باید محتوای فایلی که من گذاشتم رو در پوشه wwwroot استخراج کنید.
دسترسی ها رو هم به فایل بانک اطلاعاتی بدید.

----------


## ahmadkavand

سلام
یه سوال دارم.
وقتی که من فرمم رو پر کنم،وقتی که دکمهsend رو زدم باید اطلاعاتم برن توی بانک.درسته؟
یا نه از طریق دیگه ای
تشکر

----------


## ahmadkavand

این error یعنی چی؟
Error Type:
ADODB.Recordset (0x800A0CB3)
Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.

دستتون  درد نکنه

----------


## mahtab119

سلام
منم دقيقا مشكل شما رادارم يعني همه كدها درسته اما در ديتابيس چيزي ثبت نمي شود

اگه  راهنمايي كنيد ممنون ميشم

----------


## ahmadkavand

سلام.درسته؟

----------


## ahmadkavand

می خواستم بدونم شما خودتون برنامه asp رو چه جوری اجرا می کنید(مثل همین برنامه) 
تشکر

----------


## mahtab119

سلام
خوب فايل ها را در wwwroot كپي مي كنيم بعد هم در IE مي زنيم:
http://127.0.0.1/l0gin/login.htm
و ديگه صفحه لوگين لود مي شود
جايي ديدم مثل اينكه بايد ديتابيس را شير كرد وبه يوزر اجازه ويرايش را هم داد
اما فعلا من تا شب دسترسي به iis ندارم تا تست كنم

----------


## ahmadkavand

سلاماین error یعنی چی؟Error Type:Microsoft JET Database Engine (0x80040E37)Could not find output table 'tbltable1'./asp1.asp, line 27فکر کنم اگه این error رفع بشه همه چیز حله.دوباره کدهای asp رو می فرستم

----------


## aryaei2000

کد هارو ضمیمه کنید لطفا.

----------


## ahmadkavand

سلام.کدها رو فرستادم

----------


## ahmadkavand

سلامکدها رو میزارم ولی نمی یاند

----------


## ahmadkavand

کدها نمی یاند.ارسال نمیشن.ولی کدهای صفحه دوم.همون قسمتی که نوشتی چندتا خطا داشت درستش کردماز همون می تونید یه کپی بردارید.فقط family باید بشهfamilly اینم خطایی که میدهError Type:Microsoft JET Database Engine (0x80040E37)Could not find output table 'tbltable1'./asp1.asp, line 25

----------


## ahmadkavand

کدها ارسال نمیشنولیمی تونید از صفحه دوم جای که نوشتید چندتا خطا داشت درستش کردم یه کپی بگیرید

----------


## mahtab119

من این کدها را استفاده می کنم
Microsoft JET Database Engine (0x80004005)
Operation must use an updateable query.
/login3/act.asp, line 27

میده بعد سرچ زذم ومدم یه mod3 هم بعد insert اضافه کردم

حالا این را میده
ADODB.Connection (0x800A0E79)
Operation is not allowed when the object is open.
/login/act.asp, line 32
================
اگه راهنمایی کنید ممنون میشم

----------


## mahtab119

خوب از دوستانی که این تاپیک را همراهی کردن ممنون اما باید بگم هیچی تاپیک لاتین نمیشه
چون باید فردا پروزه را تحویل میدادم امشب فقط تاپیک انگلیسی  سرچ کردم
حالا بگذریم ....
مشکل من حل شذ:
http://support.yessoftware.com/kb_ar...?article_id=72
امیذوارم مشکل شماها هم حل بشه 
باز هم از مدیر این بخش وبقه بروبچ ممنون

----------


## aryaei2000

لطفا کد ها رو تو سایت آپلود کنید.
منظورم اینه که از بخش ضمیمه استفاده کنید.

----------


## ahmadkavand

سلامفایل asp رو ضمیمه کردم

----------


## ahmadkavand

همون error که براتون فرستادم رو میدهیه سوال دیگه:شما چه جور برنامه منو اجرا می کنید؟تشکر

----------


## aryaei2000

یه تست بکنید ببینید مشکلتون حل ششد یا نه.

----------


## aryaei2000

> سلام برنامه ای که استاد برای اتصال به من گفته اینه:
> ولی متصل نمیشه!!
> <%dim obj
> set obj=server.createobject("adodb.connection")
> obj.connectionstring="driver={microsoft access driver(*.mdb)}; "& dbq="masir\nam.mdb"
> connection.open
> dim objrs
> set objrs=server.creatobject ("adodb.recordset")
> objrs.open "users",obj,,,adcmdtable
> ...


 شما باید حین مسیر دهی از Server.MapPath استفاده کنید یا مسیرتون رو بطور کامل به برنامه بدید.
موفق باشید

----------


## ahmadkavand

سلام.لطفا کدها رو مثل صفحه های قبل برام بفرستید.وقتی که فایل ضمیمه رو دانلود می کنم یه فایل به اسم attachment  برام دانلود میشهممنون تشکر

----------


## ahmadkavand

این فابلattachment کدهای یکی از صفحه های این وب هست

----------


## ahmadkavand

این فایل کدهای یکی از صفحه های وب خودتون هست

----------


## aryaei2000

متوجه منظورتون نمیشم.
اما بازم کد رو میزارم.

<%
Dim strConn, ObjCon
Response.Buffer = True
tablpfx = ""
dbFldr = "C:\Inetpub\wwwroot\ak1.mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strConn = strConn & (dbFldr ) & ";"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Mode = adModeReadWrite 
objConn.CursorLocation = 3
objConn.open strConn
%>
<%
If Err.Number <> 0 then
Response.Write "<font face='verdana' size='2'><br><b>The Error has occured!</b>"
Response.Write "<br><br>Page: <b>config/config.asp</b>"
Response.Write "<br><br>Error Number: <b>" & err.number & "</b>"
Response.Write "<br><br>Error Description: <b>" & err.description & "</b>" 
Response.End
End If
If lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" then
Fname = Request.Form("name")
Lname = Request.Form("familly")
strsql = "INSERT INTO " & tablPfx & "table1 (name, familly) values ('" & Fname & "' , '" & Lname & "');"
ObjConn.Execute(strsql)
End If
 
Set rs = Nothing
Set objConn = Nothing
%>

----------


## ahmadkavand

یه سوال کردمشما خودتون برنامه منو چه جور اجرا می کنید؟ممنون

----------


## ahmadkavand

سلام حالا این error رو میده.Error Type:(Microsoft JET Database Engine (0x80004005peration must use an updateable query/asp1.asp, line 26

----------


## aryaei2000

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

----------


## ahmadkavand

اسم جدول=TABLE1.اسم بانک=AK1.راستی چه جور دسترسی حذف و نوشتن و خواندن رو برای فایل اکسس تعریف کنم؟دستتون درد نکنهتشکر

----------


## aryaei2000

از اینجا استفاده کنید.
https://barnamenevis.org/showthread.php?t=21245
موفق باشید.

----------


## mahtab119

جناب مدیر واقعا من از صبر و حوصله شما تشکر و تعجب می کنم
راستش خطاهایی که این کاربر عزیز لیست می کنند فقط کاقیه کپی کنند و در
گوگل سرچ کنند و ببینند چچطور قشنگ برای هر خطایی چندین امکان در نظر گرفته شده
من کمک تو کد نوسی را قبول دارم چرا که خیلی وقت ها خودمم دچار مشکل میشم
اما با لقمه اماده گرفتن اونم واسه یه مهندس کامپیوتر که قراره تو این زمینه کار کند مخالفم
ما باید یاد بگیریم که خیلی چیزها را خودمون سرچ کنیم و دنبال راه حلش بریم و اگه واقعا به بن بست رسیدیم اینقدر پست بزنیم
به هر حال این نظر من بود 
شرمنده اگه دخالت کردم

----------


## ahmadkavand

سلام.اجازه دسترسی با پوشه my project صورت میگیره.توی asp این پوشه اضافه نمیشه.توی اون عکس هم یه فایل به اسمaspnet بود پس حتما باید نرم افزار vs رو نصب کنم.مرسی.تشکر

----------


## aryaei2000

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

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

----------


## ahmadkavand

سلام.
آخر تونستم از دو راه کار رو انجام بدم.
برنامه اول:reg.asp
.نظرتون چیه؟

.
برنامه دوم:asp1.asp
.نظرتون چیه؟.
 .توی برنامه دومی که به من دادید چندتا از " رو و چندتا از sq ها رو هم برداشتم تا برنامه درست شد.خطاها به خاطر همین بود.
تشکر

----------


## ahmadkavand

حالا یه راهنمایی دیگه می خوام.
می خوام افرادی با یوزر و پسورد خودشون که از قبل این یوزر و پسورد توی بانک هستند به صفحه ای دیگه هدایت بشن.
فکر کنم یه کم از دستم ناراحتید
ممنون

----------


## aryaei2000

سلام
خوشحالم که بالاخره موفق شدید.
برای هدایت کردن کاربر به صفحه ای دیگر باید کد زیر استفاده کنید.

Response.Redirect "page name"

که در آن pagename ، نام صفحه بعلاوه فرمت آن میباشد.
موفق باشید

----------


## ahmadkavand

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

تشکر

----------


## ahmadkavand

یعنی در واقع مثل یا خود login کردن

----------


## aryaei2000

در صفحات زیر مطالب مفیدی در باره ی سوالتون وجود داره.
http://www.evolt.org/node/28652
http://www.asp101.com/samples/login.asp
موفق باشید.

----------


## ahmadkavand

سلا
رفتم توی اون دوتا سایت
ولی در موقع اجرا خطا دارن
می خواستم خودتون منو راهنامیی کلی کنم

تشکر

----------


## aryaei2000

سلام
بابت تاخیر ببخشید.
لینک هایی که دادم مشکلی نداشتن.شاید شما اطلاعات رو اشتباه وارد کرده بودید.
برای ساختن سیستم login ابتدا احتیاج به یه فرم با دو فیلد دارید:
Login.html

<form name=form1 action=login.asp method=post>
User Name : <input type=text name=username>
Password : <input type=password name=userpwd>
<input type=hidden name=login value=true>
<input type=submit value="Login">
</form>

حالا باید کدی بنویسیم که بتونه خروجی این فرم رو پردازش کنه:
Login.asp

<!--#include file="config.asp"-->
Response.Expires = -1000 'Makes the browser not cache this page
Response.Buffer = True 'Buffers the content so our Response.Redirect will work
Session("UserLoggedIn") = ""
 
If lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" Then 
    CheckLogin
Else
    Response.Redirect "login.html" 
End If 
 
Sub CheckLogin
username = replace(request.form("username"), "'", "''")
password = replace(request.form("userpwd"), "'", "''")
strsql = "select username, password from users where username = '" & username & "'  and password = '" & password & "';"
Set rs = objconn.execute(strsql)
If Not rs.Eof then
    Session("UserLoggedIn") = "true"
    Response.Redirect "userpage.asp"
Else
    Response.Write("Login Failed.<br><br>")
 
End If
rs.Close
Set rs = Nothing
End Sub
 

در صورتی که مشخصات درست وارد شده باشه شما به صفحه userpage هدایت میشید.
userpage.asp

<%
Response.Expires = -1000 'Makes the browser not cache this page
Response.Buffer = True 'Buffers the content so our Response.Redirect will work
 
If Session("UserLoggedIn")  "true" Then
Response.Write "Login was successful"
End If
%>
 

باز هم تاکید میکنم که به نامگزاری ها دقت کنید و اسامی رو با اسامی خودتون عوض کنید تا خطا نگیرید.

----------


## ahmadkavand

سلام
فایل  config.asp رو ندارم.میشه واسم ضمیمه کنید.
راستی مهندس دستود ایجاد  connection و اتصال به database رو خودم باید اضافه کنم .درسته؟

ممنون

----------


## ahmadkavand

یه توضیح هم راجع به سشن و application می خواستم
مرسی

----------


## aryaei2000

> یه توضیح هم راجع به سشن و application می خواستم
> مرسی


 نمیشه اینجا توضیح داد.ولی در حد یه جمله بگم که هر دو برای ذخیره و پایداری  اطلاعات بکار میروند اما session برای هر کاربر جداگانه ایجاد میشود و application همه گانی است.
برای اطلاعات بیشتر تو گوگل جستجو کنید.




> سلام
> فایل config.asp رو ندارم.میشه واسم ضمیمه کنید.
> راستی مهندس دستود ایجاد connection و اتصال به database رو خودم باید اضافه کنم .درسته؟
> ممنون


 دستور ایجاد کانکشن همون فایل config هست که در تاپیک گذاشته شده.

----------


## ahmadkavand

سلام 
با کدهای هایی که خودم بهش اضافه کردم برنامه درست کار می کنه.
فقط یه ایراد داره:
اونم اینه که اگه توی بانکم یه یوزر به اسم ahmad و پسوردی به اسم kavand داشته باشم 
از این به بعد هر کسی که اسم یوزرش ahmad و پسوردش هر چی باشه رو وارد کنه، به صفحه مورد نظر یا user page هدایت میشه.

ممنون تشکر

----------


## aryaei2000

درسته.
ایراد رفع شد کد رو تو صفحه قبلی نگاه کنید.

----------


## ahmadkavand

سلام
دستتون درد نکنه.درست شد.
ولی نمی دونم چرا داده های فارسی توی بانک وحشتناک یا همون خرچنگ قورباغه اند؟
احتباج به  کد داره؟

ممنون

----------


## aryaei2000

اگر میخواهید داده ها بصورت فارسی در بیان از کد های زیر در بالای صفحه های خود استفاده کنید.

<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" lang="fa-IR">

و

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

و همچنین از دستور:

Session.CodePage = 65001

کد بالا  تنظیم خاصیت کد پیج آبجکت Session است و با تنظیمات تگ های Meta در HTML فرق میکند.
موفق باشید.

----------


## ahmadkavand

سلام کد ها رو گذاشتم بالای هر صفحه ولی درست نشد
میشه بالای کد صفحه قبل بزارید؟

ممنون تشکر

----------


## aryaei2000

دقت کنید که دو کد اول رو باید بین تگ head بنویسید.

----------


## ahmadkavand

سلام 
بازم درست نشد.
فایل asp رو ضمیمه می کنم

----------


## aryaei2000

شما همیشه در طول این تاپیک موارد جزئی و ساده رو از نظر میانداختید.
مثلا
 
Fname = (Request.Form("name"))
Lname = (Request.Form("email"))

شما موقع حذف کرن sq باید پرانتز ها رو هم بر میداشتی و ...
باز هم میگم شما مطمئنید که در بانک اطلاعاتی charset رو تعریف کردید؟

----------


## ahmadkavand

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

----------


## aryaei2000

شما باید به سایت وارد بشید تا بتونید فایل های ضمیمه شده رو دانلود کنید.

----------


## ahmadkavand

سلام
من حتی اینو هم اضفه کردم ولی درست نشد
<META http-equiv=Content-Type content="text/html; charset=windows-1256">


ممنون

----------


## ahmadkavand

منظورتون راجع به تعریف charset  در بانک اطلاعاتی چیه؟
همون خطی که فرستادم؟

----------


## ahmadkavand

سلام کدها رو برام توی برنامم بزارید تا من دانلودش کنم

ممنون

----------


## aryaei2000

ببینید دو دلیل وجود داره که شما کاراکتر های فارسی نمی شوند:
1.فیلد های شما از UTF-8 پشتیبانی نمیکنند،که شما  باید از فیلدهایntext یا nvarchar  استفاده کنید. 
2.ویندوز فارسی رو پشتیبانی نمیکند.یعنی زبان فارسی نصب نیست.
که دلیل اول بیشتر مربوط به mssql است.
شما برنامه ها را روی هاست اجرا کنید.احتمالا مشکلی پیش نمیاد.

----------


## ahmadkavand

سلام
اولین خط رو از برنامه رو code page (توی صفحه قبل گذاشتم) درست شد

دستت درد نکنه
تشکر

----------


## ahmadkavand

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

----------


## Hadiir.net

چرا از صفحه 8 یه بعد همه صفحات مثل همه و جلوتر نمیره

----------


## ahmadkavand

سلام خدمت کاربر عزیزaryaei2000:
می خواستم جلوی خط هایی رو که ********** گداشتم.یه توضیح کوچک بدید

ممنون


 
<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" lang="fa-IR">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%Session.CodePage = 65001%>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
dbFldr = "C:\Inetpub\wwwroot\db1.mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strConn = strConn & (dbFldr ) 
objConn.open strconn
Response.Expires = -1000 'Makes the browser not cache this page
Response.Buffer = True 'Buffers the content so our Response.Redirect will work
Session("UserLoggedIn") = "" *************************
 
If lcase(Request.ServerVariables("REQUEST_METHOD")) = "post" Then 
CheckLogin
Else
Response.Redirect "login.html" 
End If 
 
Sub CheckLogin
username = replace(request.form("username"), "'", "''") ********************
password = replace(request.form("userpwd"), "'", "''")
strsql = "select username, password from users where username = '" & username & "' and password = '" & password & "';"
Set rs = objconn.execute(strsql)
If Not rs.Eof then
Session("UserLoggedIn") = "true" **********************
Response.Redirect "userpage.asp"
Else
Response.Write("Login Failed.<br><br>")
 
End If
rs.Close
Set rs = Nothing
End Sub
%>

----------


## aryaei2000

سلام


Session("UserLoggedIn") = "" 

این خط مقدار متغیر session (ی) بنام UserLoggedIn را برابر خالی (Empty) قرار میدهد.


username = replace(request.form("username"), "'", "''") 

در این خط کاراکتر ' با " تعویض میشود تا از تزریق Query (SQL injection) جلوگیری بعمل بیاد.


Session("UserLoggedIn") = "true"

در اینجا هم متغیر Session("UserLoggedIn")  با مقدار true یا صحیح ارزش دهی میشود.
موفق باشید.

----------


## siamak-s

با سلام خدمت مدیر این بخش

همون طور که در جریان هستید ، تاپیک دیگه ای من دارم که داره به موازات این تاپیک جلو میره کنجکاو شدم که چه طور هست که یک تاپیک به این سادگی یعنی وصل شدن به بانک اون هم اکسس 9 صفحه ادامه داشته که اومدم و کل پست ها رو خوندم ، به عنوان کاربر دوست داشتم مطالبی بگم البته اگر مشکلی نباشه: 
اولا اینکه اصلا محتویات این تاپیک از صفحات 3 به بعد هیچ ربطی به موضوع تاپیک نداره و این یعنی نقض قانون.
دوم اینکه ایشان پست های بیهوده زیاد میفرستند ، با وجود اینکه شما تقریبا از هر 3 پست ایشان 2 تاشو حدف کردید باز هم الباقی بیهوده هستند! در حالی که می تونند از ویرایش استفاده کنند.
مورد سوم اینکه شما تا کی می خواهید پاسخ این سوالات به این سادگی رو بدید؟ به نظر شما تموم هم میشه؟ فکر می کنید سوالات به این آسانی که در هر Refrence ای پاسخش هست تموم میشه؟

و خدمت این کاربر عزیز هم عرض کنم : اولا که شما این طوری به هیچ جا نمی رسی، دوم اینکه شما که ASP Classic بلد نیستید چرا اومدید توی این تالار چرا تو PHP سوالاتتون رو مطرح نکردید؟ بهتره بگم چرا قصد نکردید PHP یاد بگیرید! سوم اینکه اگر واقعا قصد یاد گرفتن دارید http://w3schools.com/asp/default.asp این آدرس می تونه به شما یاد بده ، بعد از اینکه یاد گرفتید سوالاتتون رو مطرح کنید.

در هر صورت امیدوارم از حرف های من ناراحت نشده باشید.

----------


## aryaei2000

با سلام



> با سلام خدمت مدیر این بخش
> 
> همون طور که در جریان هستید ، تاپیک دیگه ای من دارم که داره به موازات این تاپیک جلو میره کنجکاو شدم که چه طور هست که یک تاپیک به این سادگی یعنی وصل شدن به بانک اون هم اکسس 9 صفحه ادامه داشته که اومدم و کل پست ها رو خوندم ، به عنوان کاربر دوست داشتم مطالبی بگم البته اگر مشکلی نباشه: 
> اولا اینکه اصلا محتویات این تاپیک از صفحات 3 به بعد هیچ ربطی به موضوع تاپیک نداره و این یعنی نقض قانون.


اصلا اینطور نیست.سوالات ایشون از صفحه ی سه به بعد درباره دستور Insert اکسس هست که به مبحث اتصال به بانک اکسس مربوط میشه.



> دوم اینکه ایشان پست های بیهوده زیاد میفرستند ، با وجود اینکه شما تقریبا از هر 3 پست ایشان 2 تاشو حدف کردید باز هم الباقی بیهوده هستند! در حالی که می تونند از ویرایش استفاده کنند.
> مورد سوم اینکه شما تا کی می خواهید پاسخ این سوالات به این سادگی رو بدید؟ به نظر شما تموم هم میشه؟ فکر می کنید سوالات به این آسانی که در هر Refrence ای پاسخش هست تموم میشه؟


اگر کسانی نباشند که پاسخ این سوالات ساده رو بدهند پس افرادی که سوال دارند چه کار کنند؟
یادتون باشه که این سوالات از دید شما ساده هستند.



> و خدمت این کاربر عزیز هم عرض کنم : اولا که شما این طوری به هیچ جا نمی رسی، دوم اینکه شما که ASP Classic بلد نیستید چرا اومدید توی این تالار چرا تو PHP سوالاتتون رو مطرح نکردید؟ بهتره بگم چرا قصد نکردید PHP یاد بگیرید! سوم اینکه اگر واقعا قصد یاد گرفتن دارید http://w3schools.com/asp/default.asp این آدرس می تونه به شما یاد بده ، بعد از اینکه یاد گرفتید سوالاتتون رو مطرح کنید.
> 
> در هر صورت امیدوارم از حرف های من ناراحت نشده باشید.


 جواب این سوال به خودشون ربط داره نه به من و شما.
در باره اون سایت هم باید بگم که چون به زبان لاتین نوشته شده همه امکان استفاده از اون رو ندارن.من در اولین پست خودم میتونستم لینک این سایت رو بدم و برم اما اینجوری ایشون سر در گم میشدند.

----------


## siamak-s

من اصلا دوست ندارم بحث كنم يا بخوام حرفي رو يه ديگرون ثابت كنم فقط عقيده ام رو مي گم.

با توجه به اين جوابايي كه شما داديد ، من يك سوال مي پرسم(!) ، گوگل براي چي اختراع شده پس!؟

در هر صورت شما مديربخش هستيد وبهتر مي دونيد ولي چيزي كه هست اينه كه جواب همه ي اين سوال ها تو همين بخش بوده ، حالا اگر ايشان علاقه اي ندارند سري به اينترنت بزنن ، ديگه!

----------

