שלח תשובה

זירת השאלות

634
צפיות
53
תשובות

בעיה בRECORDSET

,‏ 30 בדצמבר, 2004

אני מנסה לבחון אם האימייל / שם המשתמש קיימים.
שורה 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 תשובות

  1. העקרב הגיב:

    מישהו?, בבקשה!! זה שיעורים למחר!!

  2. ניר טייב הגיב:

    תעבור על מדריך ה-ASP
    ותבין מה לא עית נכון
    או על המחברת/ספר שלך…
    גם השגיאה מעידה על זה
    רק תקרא אותה ותבין

    ואגב
    דחוף תכתוב על דלתות.

  3. העקרב הגיב:

    חחח סבבה, תוכל לכוון אותי לאיזה
    סעיף במדריך?

  4. העקרב הגיב:

    אוקיי מצאתי אבל רשום שם לעשות בדיוק
    מה שעשיתי 😐

  5. ניר טייב הגיב:

    הפכת את הסדר של הפרמטרים
    במקום rs.Open conn sql1
    תעשה rs.Open sql1 conn

  6. העקרב הגיב:

    עשיתי ו…


    Microsoft VBScript compilation error '800a0401'

    Expected end of statement

    /sources/dones/register_done.asp, line 28

    rs.Open sql1 conn
    ————-^

    מה צריך לעשות?

  7. god הגיב:

    אהממ שיעול לפני שניר יראה כנס מהר
    ששש… בשקט …

    פסיק!!!!!!!!!!!!!!!!!!!!!!111
    rs.open sql1,conn

  8. god הגיב:

    נ.ב יש לי רעיון לתגית חדשה בפורום!
    כמו שיש מודגש והכל תעשו שניר ילחץ על "משפט ניר" ואז יופיע למטה
    "דחוף תכתוב על דלתות לא פה!" זה יקל על ניר תעבודה 😀

  9. ניר טייב הגיב:

    אתה מגחגח עליי ?
    לא אני המצאתי את זה…
    אני לא יודע מי המציא את זה אבל אני יודע שהמנהלים שלנו שנמצאים גם בפורומים נוספים שאני נמצא בהם (רמז: תפוז) הם משתמשים בזה… אני רק אימצתי את זה

  10. god הגיב:

    jonatan יש לך דיילי קטן תבדוק יעילו
    ת בגוף 😐 😉

  11. העקרב הגיב:

    אוי אופס… הייתי באמצע שיעורים אז
    ישר העתקתי XD…
    עכשיו סיימתי אותם, אני אעבור על זה ואסדר…

  12. העקרב הגיב:

    יש לי בעיה בתוצאות.. של התנאים..
    זה עושה לי מלא פעמים ת'שגיאה, קוד מצורף בקובץ טקסט.

  13. god הגיב:

    תבדוק פשוט איזה פסיקים וסימנים עשית

  14. jonatan44 הגיב:

    זה לא דיליי
    זה טימטום, השארתי את החלון אם ההודעה שלך פתוח, ליפני שהם הגיבו, ואז הלכתי, וכשחזרתי באתי לענות, אבל לא ריפרשתי וככה לא ראיתי שהם ענו

  15. העקרב הגיב:

    חח לא משנה, חפיף.. ובדקתי… מישהו
    יודע מה הבעיה???

  16. זהר פלד הגיב:

    לא יודע מי המציא את זה, אבל
    את "קודים מוכנים זה בדירה ממול" אני המצאתי…
    (אומץ בהצלחה מן הסתם ביותר מקומות משאני יודע עליהם)

  17. זהר פלד הגיב:

    כן.
    א) חסר לך rs.movenext בתוך הלולאה.

    ב) בשביל מה אתה בכלל צריך לולאה? מספיק שה userName או ה eMail תפוס, לא? אלא אם כן אתה רוצה שתופיע הודעה על שניהם אם שניהם תפוסים, הלולאה מיותרת. ברגע שה recordset לא נמצא ב eof או ב bof, אתה יכול להיות בטוח שיש כבר רשומה אחת לפחות ב DB שמתאימה לתנאים ב SQL.

    חוצמזה, אין שום סיבה לשלוף * מה DB. אתה סתם מעמיס עליו, על התעבורה בינו לבין השרת, ועל השרת. אני הייתי שולף userName בלבד, או כל שדה חובה אחר.

  18. העקרב הגיב:

    שיט…
    זה לא מציג ת'קוד :|.. זה מציג ת'סקריפט,


    <html dir='rtl'>
    <head><title>טעות בהרשמה – Powered By Aspirit &copy</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 &copy</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>

  19. העקרב הגיב:


    שמע.. אני רוצה שזה יציג את שניהם, תדגים לי איך זה צריך להיות בבקשה, תודה.

  20. העקרב הגיב:

    שגיאה חדשה -_-
    , שוב שגיאה…


    Microsoft JET Database Engine error '80040e10'

    No value given for one or more required parameters.

    /sources/dones/register_done.asp, line 19

    קוד מצורף בקובץ !, תודה לעוזר!!

  21. העקרב הגיב:

    מישו'?!
    זה ממש דחוף (וניר… אל תגיד "דחוף תכתוב על דלתות" כי זה באמת מאוד דחוף.. ואני מבקש מכל בקשה, שמישהו יעזור לי…

  22. god הגיב:

    כמה דברים:
    דבר ראשון תתן לנו את השורה של הארור! נמאס לספור עם כל הרווחים בקוד שלך!
    דבר שני באמת אל תכתוב דחוף זה מציק ואנחנו לא חייבים לך כלום!

    עכשיו! בוא אני ילמד אותך משהו קטנטן , תיקרא את הארור!
    כתוב שהמשתנה לא קיבל ערך! אז תעשה RESPONSE.WRITE לכל המשתנים שלקחת ע"י REQUEST.FORM אם לכולם זה מחזיר ערך אז תעשה RESPONSE.WRITE למשפט SQL שכתבת ! אם הכל תקין אז תעשה רווח לפני הOR

  23. העקרב הגיב:

    קודם כל…
    הבעיה היא פה:
    rs.Open sql1, conn

    דבר שני…

    אני אעשה..

    אבל לעשות בדף אחר?! או באותו דף?!

  24. MasterMind הגיב:

    אז הבעיה במשט SQL שלך…
    הארור הזה אומר… ציטוט ::

    – מנסים לבחור שדה שאינו קיים מתוך טבלה. לדוגמה, אם השדה "stam" אינו קיים בטבלה "table":

    כנס …
    https://www.webmaster.org.il/showArticle.asp?id=163#27

  25. god הגיב:

    mastermind זה לא תמיד אומר שהעמודה
    לא קיימת בטבלה לי זה קרה הרבה פעמים בגלל שטעיתי בשם המשתנה ובגלל השירשור של הSQL ועוד כמה דברים אף פעם לא קרה לי בגלל שאין את העמודה[
    אבל יש סיכוי שזה יקרה

  26. MasterMind הגיב:

    נכון צודק….
    לא שמתי לב לחלק השני של התשובה  לגבי ה WHERE
    |חבול| (אולי תעשו גם אתם את האומטיקון הזה)

  27. העקרב הגיב:

    אני אבדוק..
    ו"איך לדבג SQL" קשור לזה?

    אני אקרא ….

  28. העקרב הגיב:

    עכשיו גיליתי…
    שמעו, משום מה זה לא מדפיס לי את המשתנים של הRequest.Form…
    מה אני עושה?

    (ניסיתי עם RESPONSE.WRITE)

  29. העקרב הגיב:

    יאי!! עובד לי!! אבל משום מה… זה
    ממש איטי, יש לכם דרכים להוריד קצת עומס?

  30. העקרב הגיב:

    לא חשוב, סידרתי… יש לי עוד שאלה..
    אני רוצה להתחיל לאבטח את העבודות שלי, תנו לי דרכים טובות לאבטח :).

  31. god הגיב:

    אממ חח תירגע כאילו קודם תשבור תראש
    רק אז תבוא כי אם לא תשבור תראש לא תוכל לפתור בעיות לעתיד לבד …

  32. העקרב הגיב:

    שברתי, יש לכם אתרים טובים עם
    מדריכים לאבטח בASP?!

  33. ניר טייב הגיב:

    את מה אתה רוצה לאבטח בדיוק ?
    יש כל מיני סוגים של פרצאות (לא של טכנולוגייה מסוימת)…

  34. העקרב הגיב:

    אמממ אני עושה מערכת טופסייט, תנו לי
    כל מני דברים מומלצים לאבטח אותה בכלליות בבקשה

  35. n0p הגיב:

    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 Advanced SQL Injections In SQL Server Applications (it's highly recommanded to everyone! Great document!).

  36. העקרב הגיב:

    פירמטו לי ת'מחשב, יש לך אולי תוכנה
    לפתיחת PDF ? 😐

  37. העקרב הגיב:

    עשיתי סקר כמו המאמר, וסידרתי כמה
    דברים, עכשיו יש לי בעיה…
    ההצבעות לא עולות לי…
    לא שגיאה ולא כלום.
    אז הנה הקודים, הקוד של 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>

    אני שובר על זה ת'ראש…
    תודה לעוזר!

  38. god הגיב:

    ההצבעות מופיעות בבסיס נתונים שלך?

  39. העקרב הגיב:

    חח בטעות, רציתי לרשום הודעה חדשה,
    אבל לא משנה… אם יותר נוח שזה בהודעה חדשה תגידו ואני אפתח…

  40. ניר טייב הגיב:

    Adobe Reader
    http://www.adobe.com
    (הרידר הוא בחינם העורך הוא בתשלום)

  41. god הגיב:

    אז אם זה ככה אז זה לא בחלק שמוציאים
    מהבסיס נתונים אז זה בחלק שמכניסים פשוט תעשה לכל חלק RESPONSE.WRITE עד שתגלה מתי זה אפס יכול להיות שלא כתבת איזה משתנה טוב או משהו כי אם העתקת חלק חלק מהאתר אני דיי בטוח שהבעיה היא לא בקוד.
    בהצלחה.

  42. העקרב הגיב:

    שיפרתי שזה יציג במקום המס' ID של
    התשובה זה יציג את התשובה..(אחרי שמצביעים), וזהו…

    אני אנסה לעשות את זה שוב..

    אגב, הוספתי גם את החיבורים =

שלח תשובה