צפיות
תשובות
בעיה בRECORDSET
אני מנסה לבחון אם האימייל / שם המשתמש קיימים.
שורה 28:
rs.open conn, sql1
אני מנסה לבחון אם האימייל / שם המשתמש קיימים.
השאילתות:
insert:
sql="INSERT INTO users ([username],[password],[email],[siteaddress],[description],[banner],[votes],[reg])"
sql= sql & " VALUES ('" & user & "','"
sql= sql & pass & "','"
sql= sql & email & "','"
sql= sql & address & "','"
sql= sql & description & "','"
sql= sql & banner & "','"
sql= sql & "0','"
sql= sql & date & "')"
select:
sql1= "SELECT * FROM users WHERE username='"& user &"'OR email='"& email & "'"
השגיאה:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/sources/dones/register_done.asp, line 28
53 תשובות
מישהו?, בבקשה!! זה שיעורים למחר!!
תעבור על מדריך ה-ASP
ותבין מה לא עית נכון
או על המחברת/ספר שלך…
גם השגיאה מעידה על זה
רק תקרא אותה ותבין
ואגב
דחוף תכתוב על דלתות.
חחח סבבה, תוכל לכוון אותי לאיזה
סעיף במדריך?
אוקיי מצאתי אבל רשום שם לעשות בדיוק
מה שעשיתי 😐
הפכת את הסדר של הפרמטרים
במקום rs.Open conn sql1
תעשה rs.Open sql1 conn
עשיתי ו…
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/sources/dones/register_done.asp, line 28
rs.Open sql1 conn
————-^
מה צריך לעשות?
אהממ שיעול לפני שניר יראה כנס מהר
ששש… בשקט …
פסיק!!!!!!!!!!!!!!!!!!!!!!111
rs.open sql1,conn
אופס
קורה במשפחות הכי טובות
נ.ב יש לי רעיון לתגית חדשה בפורום!
כמו שיש מודגש והכל תעשו שניר ילחץ על "משפט ניר" ואז יופיע למטה
"דחוף תכתוב על דלתות לא פה!" זה יקל על ניר תעבודה 😀
אתה מגחגח עליי ?
לא אני המצאתי את זה…
אני לא יודע מי המציא את זה אבל אני יודע שהמנהלים שלנו שנמצאים גם בפורומים נוספים שאני נמצא בהם (רמז: תפוז) הם משתמשים בזה… אני רק אימצתי את זה
—–>
rs.Open sql1,conn
jonatan יש לך דיילי קטן תבדוק יעילו
ת בגוף 😐 😉
אוי אופס… הייתי באמצע שיעורים אז
ישר העתקתי XD…
עכשיו סיימתי אותם, אני אעבור על זה ואסדר…
יש לי בעיה בתוצאות.. של התנאים..
זה עושה לי מלא פעמים ת'שגיאה, קוד מצורף בקובץ טקסט.
אני לא רואה את הקובץ TXT
…
סליחה…
תבדוק פשוט איזה פסיקים וסימנים עשית
…
זה לא דיליי
זה טימטום, השארתי את החלון אם ההודעה שלך פתוח, ליפני שהם הגיבו, ואז הלכתי, וכשחזרתי באתי לענות, אבל לא ריפרשתי וככה לא ראיתי שהם ענו
חח לא משנה, חפיף.. ובדקתי… מישהו
יודע מה הבעיה???
לא יודע מי המציא את זה, אבל
את "קודים מוכנים זה בדירה ממול" אני המצאתי…
(אומץ בהצלחה מן הסתם ביותר מקומות משאני יודע עליהם)
סידרתי קצת ת'קוד, קובץ מצורף..
כן.
א) חסר לך rs.movenext בתוך הלולאה.
ב) בשביל מה אתה בכלל צריך לולאה? מספיק שה userName או ה eMail תפוס, לא? אלא אם כן אתה רוצה שתופיע הודעה על שניהם אם שניהם תפוסים, הלולאה מיותרת. ברגע שה recordset לא נמצא ב eof או ב bof, אתה יכול להיות בטוח שיש כבר רשומה אחת לפחות ב DB שמתאימה לתנאים ב SQL.
חוצמזה, אין שום סיבה לשלוף * מה DB. אתה סתם מעמיס עליו, על התעבורה בינו לבין השרת, ועל השרת. אני הייתי שולף userName בלבד, או כל שדה חובה אחר.
שיט…
זה לא מציג ת'קוד :|.. זה מציג ת'סקריפט,
<html dir='rtl'>
<head><title>טעות בהרשמה – Powered By Aspirit ©</title></head>
<body>
<table border='1' bordercolor='black' align='center'>
<tr style='border: 0px;'>
<td style='border: 0px;' align='center' dir='rtl'>
<%
Dim user, pass, pass2, email, email2, address, description, banner, sql, sql1, conn, rs
set conn = Server.CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open Server.MapPath("../database/database.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
user = Request.Form("user")
pass = Request.Form("pass")
email = Request.Form("email")
address = Request.Form("address")
description = Request.Form("description")
banner = Request.Form("banner")
sql1= "SELECT * FROM users WHERE username='"& user &"'OR email='"& email & "'"
rs.open sql1,conn
if rs.eof=false then
%>
טעות בהרשמה!</td></tr><tr><td>
<%
end if
do while not rs.eof
if rs("username")=user then
%>
אופס! שם משתמש תפוס!<br>
<%
end if
if rs("email")=email then
%>
אופס! אימייל תפוס!<br>
<%
end if
loop
sql="INSERT INTO users ([username],[password],[email],[siteaddress],[description],[banner],[votes],[reg])"
sql= sql & " VALUES ('" & user & "','"
sql= sql & pass & "','"
sql= sql & email & "','"
sql= sql & address & "','"
sql= sql & description & "','"
sql= sql & banner & "','"
sql= sql & "0','"
sql= sql & date & "')"
conn.execute (sql)
conn.close
set conn = nothing
%>
</body>
</html>
<html dir='rtl'>
<head><title>ההרשמה בוצעה בהצלחה! – Powered By Aspirit ©</title></head>
<body>
<table border='1' bordercolor='black' align='center'>
<tr style='border: 0px;'>
<td style='border: 0px;' align='center' dir='rtl'>
תודה, אתה רשום כעת למערכת!
</td>
</tr>
<tr style='border: 0px;'>
<td style='border: 0px;' align='center' dir='rtl'>
תודה <%=user%>, אתה רשום כעת למערכת, אתה מועבר כעת לדף ההתחברות.<br>
« <a href='index.asp?go=login' style='text-decoration: none;'>אם אינך מועבר לדף ההתחברות לחץ כאן</a> »
</td></tr></table></body></html>
…
שמע.. אני רוצה שזה יציג את שניהם, תדגים לי איך זה צריך להיות בבקשה, תודה.
שגיאה חדשה -_-
, שוב שגיאה…
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.
/sources/dones/register_done.asp, line 19
קוד מצורף בקובץ !, תודה לעוזר!!
מישו'?!
זה ממש דחוף (וניר… אל תגיד "דחוף תכתוב על דלתות" כי זה באמת מאוד דחוף.. ואני מבקש מכל בקשה, שמישהו יעזור לי…
כמה דברים:
דבר ראשון תתן לנו את השורה של הארור! נמאס לספור עם כל הרווחים בקוד שלך!
דבר שני באמת אל תכתוב דחוף זה מציק ואנחנו לא חייבים לך כלום!
עכשיו! בוא אני ילמד אותך משהו קטנטן , תיקרא את הארור!
כתוב שהמשתנה לא קיבל ערך! אז תעשה RESPONSE.WRITE לכל המשתנים שלקחת ע"י REQUEST.FORM אם לכולם זה מחזיר ערך אז תעשה RESPONSE.WRITE למשפט SQL שכתבת ! אם הכל תקין אז תעשה רווח לפני הOR
קודם כל…
הבעיה היא פה:
rs.Open sql1, conn
דבר שני…
אני אעשה..
אבל לעשות בדף אחר?! או באותו דף?!
אז הבעיה במשט SQL שלך…
הארור הזה אומר… ציטוט ::
– מנסים לבחור שדה שאינו קיים מתוך טבלה. לדוגמה, אם השדה "stam" אינו קיים בטבלה "table":
כנס …
יש מאמר במדור ASP על
איך לדבג SQL.
mastermind זה לא תמיד אומר שהעמודה
לא קיימת בטבלה לי זה קרה הרבה פעמים בגלל שטעיתי בשם המשתנה ובגלל השירשור של הSQL ועוד כמה דברים אף פעם לא קרה לי בגלל שאין את העמודה[
אבל יש סיכוי שזה יקרה
נכון צודק….
לא שמתי לב לחלק השני של התשובה לגבי ה WHERE
|חבול| (אולי תעשו גם אתם את האומטיקון הזה)
אני אבדוק..
ו"איך לדבג SQL" קשור לזה?
אני אקרא ….
עכשיו גיליתי…
שמעו, משום מה זה לא מדפיס לי את המשתנים של הRequest.Form…
מה אני עושה?
(ניסיתי עם RESPONSE.WRITE)
יאי!! עובד לי!! אבל משום מה… זה
ממש איטי, יש לכם דרכים להוריד קצת עומס?
לא חשוב, סידרתי… יש לי עוד שאלה..
אני רוצה להתחיל לאבטח את העבודות שלי, תנו לי דרכים טובות לאבטח :).
*הקפצה*
אממ חח תירגע כאילו קודם תשבור תראש
רק אז תבוא כי אם לא תשבור תראש לא תוכל לפתור בעיות לעתיד לבד …
שברתי, יש לכם אתרים טובים עם
מדריכים לאבטח בASP?!
את מה אתה רוצה לאבטח בדיוק ?
יש כל מיני סוגים של פרצאות (לא של טכנולוגייה מסוימת)…
אמממ אני עושה מערכת טופסייט, תנו לי
כל מני דברים מומלצים לאבטח אותה בכלליות בבקשה
Read some papers about…
SQL Injections and XSS. This is a very basic types of vulns, but they are very common.
I think there is an SQL Injections paper in this website, but I recommand you to read NGSSoftware's (it's highly recommanded to everyone! Great document!).
פירמטו לי ת'מחשב, יש לך אולי תוכנה
לפתיחת PDF ? 😐
עשיתי סקר כמו המאמר, וסידרתי כמה
דברים, עכשיו יש לי בעיה…
ההצבעות לא עולות לי…
לא שגיאה ולא כלום.
אז הנה הקודים, הקוד של Vote.asp:
<%
Dim answerID,conn,rs
Set conn = Server.CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open Server.MapPath("database.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
answerID= TRIM(Request.Form("answer"))
sql = "SELECT Total_Hits FROM pl_Answer WHERE ID=" & answerID
rs.Open sql, conn
Total_Hits = rs("Total_Hits")+1
If answerID<>"" Then
conn.Execute "UPDATE pl_Answer SET Total_Hits =" & Total_Hits & " WHERE ID=" & answerID
End If
Response.Redirect "PollResults.asp?QuestionID=" & Request.Form("QuestionID")
%>
הקוד של deafult.asp (הדף בוא בוחרים תשובה):
<%
Dim sql,conn,rs
Set conn = Server.CreateObject("ADODB.Connection")
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open Server.MapPath("database.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT pl_Question.ID as QuestionID, pl_Question.Question as Question,"
sql = sql & " pl_Answer.ID as AnswerID, pl_Answer.Answer as Answer "
sql = sql & " FROM pl_Question, pl_Answer"
sql = sql & " WHERE pl_Question.ID = pl_Answer.Que_ID AND pl_Question.Status=1"
rs.Open sql, conn
%>
<form method=post action="Vote.asp">
<table>
<tr>
<td colspan="2" align="Center"><%=rs("Question")%>
<input type="hidden" name="QuestionID" value="<%=rs("QuestionID")%>">
</td>
</tr>
<%Do While Not rs.EOF%>
<tr>
<td><input type="radio" name="answer" value="<%=request.form("answer")%>"></td>
<td><%=rs("Answer")%></td>
</tr>
<% rs.MoveNext
Loop
rs.Close
%>
<tr><td>
<input type="submit" value="שלח הצבעה">
</td></tr>
</table>
</form>
אני שובר על זה ת'ראש…
תודה לעוזר!
ההצבעות מופיעות בבסיס נתונים שלך?
חח בטעות, רציתי לרשום הודעה חדשה,
אבל לא משנה… אם יותר נוח שזה בהודעה חדשה תגידו ואני אפתח…
אכן, משום מה הכל מופיע כאפס 😐
Adobe Reader
http://www.adobe.com
(הרידר הוא בחינם העורך הוא בתשלום)
אז אם זה ככה אז זה לא בחלק שמוציאים
מהבסיס נתונים אז זה בחלק שמכניסים פשוט תעשה לכל חלק RESPONSE.WRITE עד שתגלה מתי זה אפס יכול להיות שלא כתבת איזה משתנה טוב או משהו כי אם העתקת חלק חלק מהאתר אני דיי בטוח שהבעיה היא לא בקוד.
בהצלחה.
שיפרתי שזה יציג במקום המס' ID של
התשובה זה יציג את התשובה..(אחרי שמצביעים), וזהו…
אני אנסה לעשות את זה שוב..
אגב, הוספתי גם את החיבורים =
אוףףף זה לא קופץ 🙁
שברתי עוד קצת ת'ראש ופועל 🙂