javascript -> perl
walker
- perl
hi!
ich bin absoluter perldau :)
ist es moeglich ein perlprogramm zu schreiben, welches die gleichen char verschluesselungen anlegt wie javascript?
wenn ja, wo fange ich an?
wenn nein, thema erledigt!
<script type="text/javascript">
var Name = "xMyTest";
var testa = (Name.charCodeAt(2));
var testb = (Name.charCodeAt(3));
var testc = (Name.charCodeAt(4));
var testd = (Name.charCodeAt(5));
var number = Math.round((testa+testb+testc+testd)*2265.7+35.4-92861);
document.write(number);
</script>
nummer waere in diesem fall 861034
ich moechte mittels form/eingabe Name den namen an ein perl_script schicken.
diese perl_script soll den namen entsprechend umrechnen und das password (Nummer) generieren.
ausserdem waere es toll das password anschliessend auszugeben, an eine email zu senden und wenn moeglich diese daten in eine datenbank zu schreiben.
bisherige loesung:
user sendet seinen wunschnamen (xMyTest) an meine emailadresse , ich rechne das mittels obigem .js um und sende die nummer an den user zurueck.die ueberpruefung des namens und der nummer (match) findet beim anwender statt
(lokales_openGL_game .js_engine/spidermonkey).
danke >>ew<<
Hallo Walker,
ist es moeglich ein perlprogramm zu schreiben, welches die gleichen char verschluesselungen anlegt wie javascript?
...
var Name = "xMyTest";
var testa = (Name.charCodeAt(2));
var testb = (Name.charCodeAt(3));
var testc = (Name.charCodeAt(4));
var testd = (Name.charCodeAt(5));
var number = Math.round((testa+testb+testc+testd)*2265.7+35.4-92861);
document.write(number);
Ich frage mich ob dieser Code Sinn macht.
Macht es Sinn, nur das 3. bist zum 6. Zeichen in die Berechnungen einzubeziehen.
Was soll passieren wenn eine zu kurzer String eingegeben wird?
vielleicht wär hier eine for-Schleife angebracht.
stellst du dir das so vor:
#!/usr/bin/perl
use warnings;
use strict;
my $name = shift;
my $testa = ord(substr($name, 2, 1));
my $testb = ord(substr($name, 3, 1));
my $testc = ord(substr($name, 4, 1));
my $testd = ord(substr($name, 5, 1));
my $number = ($testa + $testb + $testc + $testd)*2265.7 + 35.4 - 92861;
printf "%.0f\n", $number;
die Variante mit for-Schleife vom 2. bis zum letzten Zeichen würde dann so aussehen:
my $test = 0;
for(1..length($name)-1) {
$test += ord(substr($name, $_, 1));
}
my $number = $test*2265.7 + 35.4 - 92861;
eine Email schicken und in eine Datenbank schreiben ist eine andere Geschichte. Hast du einen MySQL Server, läuft ein Postfix/Sendmail auf dem Server?
Benne
hi Benne!
danke fuer deine rasche antwort
im game frage ich ab ob
"badname" (hitler, nazi, ....)
min. 7 chars
max. 20chars
vorhanden sind, ansonsten -> BadName -> bzw. -> no register
ein mainproblem war Math.round(.js) in perl zu schreiben, int(perl) liefert nicht die gleichen zahlen zurueck,
die verschluesselung ohne Math.round (.js) ergibt nun die selbe zahl wie die perlverschluesselung.
(hab die kommastellen bei der berechnung weggelassen)
###############mein bisheriges ergebniss
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
my $Name = "xMyName";
my $testA = substr($Name,2,1);
my $testB = substr($Name,3,1);
my $testC = substr($Name,4,1);
my $testD = substr($Name,5,1);
my $XestA = (ord($testA));
my $XestB = (ord($testB));
my $XestC = (ord($testC));
my $XestD = (ord($testD));
my $XtestX =(($XestA+$XestB+$XestC+$XestD)*2265+35-92861);
my $PwA = substr($XtestX,0,2);
my $PwB = substr($XtestX,2,2);
my $PwC = substr($XtestX,4,2);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print <<"ENDE";
<html><head><title>Password</title></head><body>
<h1>My$PwA-NA$PwC-ME$PwB</h1>
</body></html>
ENDE
###############mein bisheriges ergebniss
ergibt password : My82-NA99-ME44
dein beispiel is bei den variablen kuerzer, so werd ich das gerne uebenehmen, bloss wie bekomme ich den namen in das script, ich such und such und find nix in selfhtml
my $Name ist ja eigentlich nicht vordeffiniert, das wird ja erst durch das formular eingetragen
ich wollte die daten einfach in ein text.file (data.txt) schreiben mehr nicht, keine aufwendige datenbankloesung, denk das waer hier etwas oversized.
ew<<
Hallo walter,
ein mainproblem war Math.round(.js) in perl zu schreiben, int(perl) liefert nicht die gleichen zahlen zurueck,
wie in meinem Beispiel geht das elegant ohne Zusatzmodule mit printf:
printf "%.0f", 7.5;
ergibt 8
die verschluesselung ohne Math.round (.js) ergibt nun die selbe zahl wie die perlverschluesselung.
(hab die kommastellen bei der berechnung weggelassen)###############mein bisheriges ergebniss
#!/usr/bin/perl -w
benutze lieber "use warnings" statt -w, da sonst Warnungen für alle eingebundenen Module eingeschalten werden
use strict;
use CGI::Carp qw(fatalsToBrowser);
...
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print <<"ENDE";
<html><head><title>Password</title></head><body>
<h1>My$PwA-NA$PwC-ME$PwB</h1>
</body></html>
schau dir mal PROGRAMMING STYLE (header(); start_html()
) des CGI Moduls an
my $Name ist ja eigentlich nicht vordeffiniert, das wird ja erst durch das formular eingetragen
das empfehle ich den Einsatz des CGI Moduls: FETCHING THE VALUE OR VALUES OF A SINGLE NAMED PARAMETER
ich wollte die daten einfach in ein text.file (data.txt) schreiben mehr nicht, keine aufwendige datenbankloesung, denk das waer hier etwas oversized.
ja. Wobei das mit dem DBI Modul kaum Aufwand ist.
Gruß,
Benne
hi Benne!
ich hab folgendes am anfang des scripts eingefuegt
use CGI;
my $query = new CGI;
my $Name = $query->param("name");
########### formular #############
<form action="convert.pl" method="post">
<input name="name" type="text" size="40" maxlength="20">
<input type="submit"><input type="reset">
########### formular #############
scheint problemlos zu laufen, namen werden korrekt in zahlen umgerechnet, kein error 500, ...
is es auch syntaxisch korrekt?
sendmail habe ich , waere also kein problem ich seh mir das mal naeher an, vielleicht kann ich die daten sogar versenden
textfile mit daten ist noch ein buch mit sieben siegeln
ew<<
hi!
das anlegen einer .log_datei hab ich inzwischen mal so geloest, daten werden im "myLogFile.log" auch richtig angelegt.
das subroutine wird aufgerufen nachdem die bildschirm_ausgabe stattgefunden hat
######### sub im script ###########
sub WriteToLog()
{
open(DATA, "+>>myLogFile.log") || die "Log-Datei nicht gefunden!";
flock(DATA, LOCK_SH);
my $User = $Name;
my $Pass = "0A$PwA-WN$PwC-EE$PwB";
select(DATA);
print "\n<tr><td>User : $User </td><td>Pass : $Pass</td><td>";
close(DATA);
}
######### sub im script ###########
ew<<