PDA

View Full Version : کمک فووووری در مورد کپچا



morteza1207
پنج شنبه 01 مرداد 1394, 13:43 عصر
سلام. من یه کپچا نوشتم و به درستی هم کار میکنه ولی یرا بازیابی مشکل داره .توی یه update panel گذاشتم ولی وقتی دکمه ی بازیابی میزنم تصویر در اصل تغییر میکنه و تو صفحه نشون نمیده مثل اینکه هیچ اتفاقی نمیافته و ولی میرم عکس رو چک میکنم میبنم عوض شده ولی عکس آپدیت نمیشه.
اینو چیکارش کنم ؟
ممنون
کد اگه خونده نشه توی تکست فایل ریختم و اتچ کردم




اینم کد




<ul class="clearfix">
<li>

<span class="captcha">
تصویر امنیتی
</span>


<asp:UpdatePanel ID="UpdatePanel1" runat="server">

<ContentTemplate>
<asp:Image ID="imgCaptcha" runat="server" />

<asp:LinkButton ID="lnkbtn" runat="server" OnClick="lnkbtn_Click" >بازیابی تصویر</asp:LinkButton>



</ContentTemplate>
</asp:UpdatePanel>






<input id="txtCaptcha" class="txtusername txtcaptcha" type="password" placeholder=" تصویر امنیتی " />
</li>
</ul>






قسمت C#‎‎‎‎‎‎




public partial class UserControls_RightLoginBox : System.Web.UI.UserControl
{
private Bitmap btmp;
private Graphics g;
private Captcha captcha;
private string captchaUrl;
protected void Page_Load(object sender, EventArgs e)
{



if(!IsPostBack)
{
CreateCaptchaCode();
}
}

private void CreateCaptchaCode()
{
captcha = new Captcha();
captchaUrl = "~/Images/CaptchaImages/Captcha.jpg";
btmp = new Bitmap(Server.MapPath(captcha.GetImageUrlForBitMap ()));
g = Graphics.FromImage(btmp);
for (int i = 0; i < 10; i++)
{
g.DrawLine(new Pen(captcha.GetColorForDrawLine(), 1), captcha.GetRandom().Next(145), captcha.GetRandom().Next(60), captcha.GetRandom().Next(145), captcha.GetRandom().Next(60));
}
SolidBrush drawBrush = new SolidBrush(Color.LightBlue);


PointF drawPoint = new PointF(18.0F,20.0F);
g.DrawString(captcha.GetCaptchaCode(), new Font("arial", captcha.GetRandom().Next(20, 23), FontStyle.Italic),drawBrush, drawPoint);

btmp.Save(Server.MapPath(captchaUrl));

imgCaptcha.ImageUrl = captchaUrl;
}

protected void lnkbtn_Click(object sender, EventArgs e)
{
CreateCaptchaCode();

}
}

Davidd
پنج شنبه 01 مرداد 1394, 15:27 عصر
سلام. قسمت هایی از صفحه که قراره به صورت داینامیک تغییر کنن باید داخل UpdatePanel قرار گیرند. در این مورد هم captcha قراره تغییر کنه در حالی که خارج از Updatepanel قرار داره. کنترل captcha را داخل Updatepanel قرار بده.

morteza1207
پنج شنبه 01 مرداد 1394, 17:33 عصر
سلام. قسمت هایی از صفحه که قراره به صورت داینامیک تغییر کنن باید داخل UpdatePanel قرار گیرند. در این مورد هم captcha قراره تغییر کنه در حالی که خارج از Updatepanel قرار داره. کنترل captcha را داخل Updatepanel قرار بده.


منظورتون همون imgcaptcha
<asp:Image ID="imgCaptcha" runat="server" />
هست؟ اینم قرار دادم ولی بازم نشد.

morteza1207
پنج شنبه 01 مرداد 1394, 17:39 عصر
کپچا خودش در اصل عوض میشه و توی صفحه اعمال نمیشه چون صفحه ریفرش نشده اون عکس یا کپچای جدید اعمال نمیشه

daffy_duck376
پنج شنبه 01 مرداد 1394, 17:42 عصر
خود عکس رو بزار تو آپدیت پنل عزیزم چرا همه چیز داخله به جز اون چیزی که باید عوض بشه؟!!!!

morteza1207
پنج شنبه 01 مرداد 1394, 17:50 عصر
ببینین من اینجا بازیابی تصویر رو زدم ولی عکس تغییر نکرده

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

133496

morteza1207
پنج شنبه 01 مرداد 1394, 17:52 عصر
خود عکس رو بزار تو آپدیت پنل عزیزم چرا همه چیز داخله به جز اون چیزی که باید عوض بشه؟!!!!
گذاشتم بازم نمیشه عکس های بالایی رو نگاه کنید در اصل عوض میشه ولی تو صفحه اعمال نمیشه

daffy_duck376
پنج شنبه 01 مرداد 1394, 17:53 عصر
اصلا ربطی نداره. شما تو آپ دیت پنل تصویر رو میسازی . اما چون postback انجام نمیشه و از طرفی کنترل image تو آپدیت پنل نیست در نتیجه عکس لود نمیشه

morteza1207
پنج شنبه 01 مرداد 1394, 18:02 عصر
اصلا ربطی نداره. شما تو آپ دیت پنل تصویر رو میسازی . اما چون postback انجام نمیشه و از طرفی کنترل image تو آپدیت پنل نیست در نتیجه عکس لود نمیشه
خوب من گذاشتم توی آپدیت پنل بازم نشد الان چیکار کنم که این عمل کنه؟

پیام حیاتی
پنج شنبه 01 مرداد 1394, 18:25 عصر
بدون update panel تست کن.

morteza1207
پنج شنبه 01 مرداد 1394, 18:28 عصر
بدون update panel تست کن.
خوب بدون آپدیت پنل صفحه پست بک میشه و نمیخوام پست بک بشه. میخوام ایجکسی صورت بگیره مثل بقیه ی کپچا ها

morteza1207
پنج شنبه 01 مرداد 1394, 18:47 عصر
کسی نمیدونه این مشکلو چجوری باید حلش کرد؟
بی زحمت اگه کسی کد کپچای آماده داره که کار میکنه بزاره ما هم استفاده کنیم
ممنون

arash_flag
جمعه 02 مرداد 1394, 00:51 صبح
سلام دوست عزیز اصلا ربطی نداره به اینکه بزاری تو آپدیت پنل .
منم الان پروژه ام رو آپلود کردم به همین مشکل برخورد کردم تحقیق کردم انگار مرورگر کش میکنه و تصویر قبلی ک تو حافظه داره رو نمایش میده و فقط با ctr+f5 مشکل حل میشه .
نمیدونم منم از اساتید خواهش میکنم که کمک کنن بیش از 10 تاپیک در این مورد وجود داره و به سرانجام نرسیده یا از نحوه ی کارخودشون به ما هم آموزش بدهند یا کمک کنن تا این تاپیک به عنوان مرجع این مشکل باشه .

daffy_duck376
جمعه 02 مرداد 1394, 05:28 صبح
شما اگه مطمئن هستید مشکل اینه میتونه یه راه حل باشه که اسم تصویر ور تو هر بار عوض کنید و یه اسمن تصادفی ولید کنید تا مرور گر دیگه از کش خودش استفاده نکنه

arash_flag
جمعه 02 مرداد 1394, 12:01 عصر
شما اگه مطمئن هستید مشکل اینه میتونه یه راه حل باشه که اسم تصویر ور تو هر بار عوض کنید و یه اسمن تصادفی ولید کنید تا مرور گر دیگه از کش خودش استفاده نکنه

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

string str = "QWERT1234567890YUIOPASDFGHJKLZXCVBNM";
object[] abc = new object[6];
string[] str1 = new string[6];


Random r = new Random();

for (int i = 0; i < 5; i++)
{
abc[i] = r.Next(1, str.Length);

}

for (int i = 0; i < 5; i++)
{
str1[i] = str.Substring(Convert.ToInt32(abc[i]), 1);

text += str1[i];


}





if (!Page.IsPostBack)
{
Session.Add("result",text);


Bitmap b = new Bitmap(Server.MapPath("/img/back/b3.jpg"));

Graphics g = Graphics.FromImage(b);
g.DrawString(text, new Font("arial", 12, FontStyle.Bold), SystemBrushes.WindowText, new PointF());

b.Save(Server.MapPath("/img/back/c" + text + ".jpg"));

img1.ImageUrl = "/img/back/c" + text + ".jpg";



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

morteza1207
جمعه 02 مرداد 1394, 14:14 عصر
سلام من یکی دیگه نوشتم خواستی تو pv بگو برات بفرستم:چشمک:

arash_flag
جمعه 02 مرداد 1394, 17:53 عصر
سلام من یکی دیگه نوشتم خواستی تو pv بگو برات بفرستم:چشمک:
شما اگه میخای بفرستی ، بفرست تا بقیه هم استفاده کنن.

daffy_duck376
جمعه 02 مرداد 1394, 23:12 عصر
کامپوننت dev express خیلی خوبه کپچا هم داره هیچ دوشواری هم نداره

پیام حیاتی
شنبه 03 مرداد 1394, 12:19 عصر
کامپوننت dev express خیلی خوبه کپچا هم داره هیچ دوشواری هم نداره
لینک دانلود؟رایگان یا تجاری؟

بیتا حکمت
شنبه 03 مرداد 1394, 12:38 عصر
دوستان در مورد کپچای گوگل هم مطالعه کنید . خیلی جالبه . فک کنم اسم اصلی اش (reCAPTCHA ) بود . تنها سختی اش اینکه بعضی از کاربران مبتدی ایرانی نمی تونن مقادیر اون مدل کپچا رو وارد کنن یا حوصله اشون نمی کشه !

mbasirati
شنبه 03 مرداد 1394, 20:53 عصر
از کپچا دات کام استفاده کنید هیچ دردسری نداره. خیلی هم امکانات داره. از طریق ناگت هم میتونید به پروژتون اد کنید. به سادگی دی ال الش رو به پروژه اضافه می کنید و هرجا نیاز دارید مث یه کنترل اونو میذارید تو صفحه بقیه کارا رو خودش انجام میده. برای چکش هم یه خط کد داره. خیلی سادس.

http://captcha.com/asp.net-captcha.html

فقط مشکلش اینه که عکسش لینک به سایتشه که اونم با جی کوئری حلش کردم و لینکش رو برداشتم :)

daffy_duck376
یک شنبه 04 مرداد 1394, 06:42 صبح
لینک دانلود؟رایگان یا تجاری؟

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