2016-04-11 3 views
2

Ich habe jQuery Real Person bei keith-wood.name/realPerson.html. Doch nach Konfiguration und Test Es ist nicht work.As folgen Snippet-Code in view.Look so ist es ok, zeigen capchaWie man jQuery reale Person in Ansicht mvc Rasierapparat asp.net benutzt?

enter image description here

$('.realperson_text').realperson({ 
 
     length: 6, 
 
     chars: $.realperson.alphanumeric 
 
});
<div class="form-group input-group-sm"> 
 
        <h5>Capcha</h5> 
 
        <div class="realperson_text"></div> 
 
        @Html.TextBoxFor(p => p.defaultReal, new { @class = "form-control text-uppercase", @placeholder = "type capcha code", @maxlength = "6" }) 
 
</div>
Und das ist Aktion, Snippet-Code

public ActionResult UploadProfile(TestModel capcha_demo) 
{ 
     var salt = 12345; 
     if (rpHash(capcha_demo.defaultReal + salt) != Request.Form["realPersonHash"]) 
     { 
      ViewBag.Message = "Capcha wrong"; 
     } 
} 

Ja, als Demo in der Homepage, ich weiß nicht, was ist die Request.Form["realPersonHash"]. Können Sie mir sagen, wie Sie es bekommen?

+3

Dies ist eine Art obskure Bibliothek. Sie werden wahrscheinlich mit dem Entwickler Kontakt aufnehmen müssen, um eine echte Antwort zu erhalten. Am besten ist es jedoch, wenn Sie etwas mehr Standard und bewährtes wie Google ReCAPTCHA (https://www.google.com/recaptcha/intro/index.html) verwenden. Es ist dumm einfach zu implementieren, aber Sie werden eine Fülle von Community-Unterstützung haben, wenn Sie Probleme haben. Und noch besser, es erfordert nur einen einfachen Klick durch den Benutzer, anstatt Buchstaben- und Zahlenfolge eingeben zu müssen. –

+0

Wenn Sie einen Debug-Punkt auf 'var salt = 12345 setzen;' Was ist in dem 'capcha_demo' Parameter? vielleicht ist der 'realPersonHash' da drin? – Blindsyde

+0

Es ist auch erwähnenswert, dass sogar diese textbasierten CAPTCHAs, in denen selbst * du * den Text nicht erkennen kann, in 90% der Fälle von Bots besiegt werden können. Google brach bekanntermaßen sein eigenes altes CAPTCHA, indem es eine nicht verwandte Texterkennungs-API für die Straßenansicht freigab. Das CAPTCHA, das Sie hier haben, sieht für einen Bot unglaublich einfach zu entziffern aus. –

Antwort

0

Der Trick dieses Plugins ist das Hinzufügen eines Elements vor dem Senden des Formulars.

in der Plugin-Code jquery.realperson.js Linie 112 Sie haben diesen Code:

on('submit.' + inst.name, function() { 
       var name = inst.options.hashName.replace(/\{n\}/, elem.attr('name')); 
       var form = $(this); 
       form.find('input[name="' + name + '"]').remove(); 
       form.append('<input type="hidden" class="' + self._hashClass + '" name="' + name + 
        '" value="' + hash(text + salt) + '">'); 
       setTimeout(function() { 
        form.find('input[name="' + name + '"]').remove(); 
       }, 0); 
      }); 

Sie können sehen, dass es einen Eingang (form.append) hinzufügen und löschen es kurz nach dem Eintragen

form.find('input[name="' + name + '"]').remove(); 

Das ist der Trick!

+0

Nein, es hängt von Ihrer Eingabe ab – Ygalbel

+0

Oh, sicher, wenn ich Devtool in Chrome öffne, sehe ich 'Content-Disposition: form-data; name = "defaultReal" an98ck Content-Disposition: Formulardaten; name = "undefinedHash" -1524496973'. Ich denke, ich sollte wie folgt versuchen 'if (rpHash (capcha_demo.defaultReal + salt)! = Request.Form [" undefinedHash "])' in diesem Fall. Wie ist es mit Ihnen ? –

+0

Haben Sie Daten in den Eingabetext eingegeben? – Ygalbel

Verwandte Themen