Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
15.09.2008, 21:39
RikkuZooo



Hallo brauche mal hilfe f¨¹r ein script.

also in der script.js wird der ajax script ausgef¨¹rt:
function email() {
if(xmlHttp) {
try {
var from = document.getElementById("from").value;
var to = document.getElementById("to").value;
var message = document.getElementById("message").value;

var params = "from=" + from + "&to=" + to + "&message=" + message;

xmlhttp.open("post", "email.php", true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(params);
} catch(e) {
alert("Can't connect to server:\n" + e.toString());
}
}
}

in HTML teil steht dieser code:
<form action="index.html" onsubmit="return email()" method="post">
ÁªÏµ·½Ê½£º<br>
<input name="from" size="34" type="text"> ÄúµÄµç×ÓÓʼþÕâÀï¡£<BR>

<input class="radio" name="to" type="radio" value="admin">¹ÜÀí <input class="radio" name="to" type="radio" value="martin">Âí¶¡ <input class="radio" name="to" type="radio" value="sally">Ïþϼ<BR>

<textarea cols="40" name="message" rows="5"></textarea><BR>

<input class="submit" name="submit" type="submit" value="Ìá½»">
</form>

und in der php steht bei mir dann das hier:
mail(".$_POST[to]."@u-ac.net", "Mail Script", $_POST[message], "From: $_POST[from]");

Also zum Problem der request wird nicht so wirklich ausgef¨¹rt ich weis auch nicht warum...

--

AirChina Mobile

zum Seitenanfang zum Seitenende Profil || Suche
001
15.09.2008, 22:00
LeJean



getElementById(x) bezieht sich auf das "id"-Attribut eines Elements. Form-Elemente mit dem Wert im "name"-Attribut werden folglich nicht gefunden. Um das zu lösen, solltest du deine Elemente mit IDs versehen oder dich von oben so durch den DOM-Baum bis zum Objekt hangeln.

Um die ID-Methode kurz zu skizzieren:
Quellcode:<input id="mail_from" name="from" size="34" type="text" /><br /> und dann mit
Quellcode:fromElement = document.getElementById("mail_from"); holen.

--


Dieser Beitrag wurde am 15.09.2008 um 22:06 von LeJean bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
15.09.2008, 22:05
caedes



rikkuzoo: dein charset ist defekt. umlaute und so sehen ganz komisch aus.

--

caedes

Deutschland rückt nach Einschätzung der Sicherheitsbehörden im Superwahljahr verstärkt ins Visier von Terroristen.

zum Seitenanfang zum Seitenende Profil || Suche
003
15.09.2008, 22:07
RikkuZooo



UTF8 :P ist alles auf chinesich auf er seite... und as THW kann an scheint kein UTF8 obwohl man das board hier in UTF-16le codieren könte somit würden alle umlaute gehen auch iso code.

--

AirChina Mobile


Dieser Beitrag wurde am 15.09.2008 um 22:08 von RikkuZooo bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
16.09.2008, 18:37
RikkuZooo



habs so probiert und es geht immer nochnicht :/ wo is denn bitte der fehler...

<html>
<head>
<title>Test...</title>

<SCRIPT type=text/javascript>

function mail() {
var http;

if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}

var url = "email.php";
var from = document.getElementById("mail_from").value;
var to = document.getElementById("mail_to").value;
var message = document.getElementById("mail_message").value;
var params = "from=" + from + "&to=" + to + "&message=" + message;

http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
document.getElementById("Ausgabe").innerHTML = http.responseText;
alert(http.responseText);
}
}
http.send(params);
}
</SCRIPT>
</head>

<body>

<form action="#" onsubmit="mail(); return true;" method="POST">
E-Mail <input id="mail_from" name="from" size="45" type="text"><BR>
<input class="radio" id="mail_to" name="to" type="radio" value="admin">Admin<BR>
<textarea cols="40" id="mail_message" name="message" rows="5"></textarea><BR>
<input name="submit" type="submit" value="Submit">
</form>

HTML vom Server: <div id="Ausgabe"></div>

</body>
</html>

--

AirChina Mobile

zum Seitenanfang zum Seitenende Profil || Suche
005
16.09.2008, 18:46
Krifitze



Disclaimer: Ich hab ca. 0,02 units Ahnung von JavaScript...
...aber wäre es nicht logischer, das Formularfeld mit document.<form-ID>.<input-ID> anzusprechen?

Also, dass der form-Tag noch ein ID Attribut bekommt.

--

Website


Dieser Beitrag wurde am 16.09.2008 um 18:52 von Krifitze bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
16.09.2008, 18:50
RikkuZooo



eigenlich nicht notwendig, da es ja nur 1 formular gibt und das macht ja denn auswirkenden aufruff. onsubmit="mail(); return true;"

--

AirChina Mobile


Dieser Beitrag wurde am 16.09.2008 um 18:51 von RikkuZooo bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
16.09.2008, 22:57
LeJean



Also du solltest mal mit ein paar Ausgaben (v.a. in der Callback-Funktion für den readystatechange) prüfen, was da genau nicht funktioniert.

Die grundsätzliche Struktur hier geht auf jeden Fall:

Editiert: Code rausgenommen. Unten gibt's meinen ganzen Testcode

Du solltest zusätzlich den restlichen JavaScript-Teil um Alerts erweitern, die die Elemente ausgeben, welche du per document.getElementById() geholt hast. Müsste dann sowas rauskommen wie [HTTP input element] oder so.. (sofern ich mich erinnere)

Ich will insgesamt sagen: Schreib's neu - und zwar strukturierter! Das kann man doch garnicht vernünftig pflegen. Du hast das ganze Zeug in einer einzigen Funktion. Und benutz doch bitte die code-Tags ;)

Editiert: Dein Problem ist noch ein ganz anderes. Du benutzt den submit-Button, um die Inhalte abzuschicken, möchtest sie aber danach dynamisch in die Seite wieder einbetten. Ein submit eines Formulars zwingt den Browser allerdings dazu, die Seite neu zu laden. Daher kannst du alle Attribute des form-Elements rausnehmen und den submit-Button durch
Quellcode:<input type="button" onclick="submitForm()" value="Submit" /> ersetzen. Dann wird die Seite nicht neu geladen.

Also alles in allem:
index File
Quellcode:<!DOCTYPE html public "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>AjaxTest</title>
  <script src="./ajax.js" type="text/javascript"></script>
</head>

<body>

    <form>
        <input type="text" id="text_input" />
        <input type="button" value="Submit" onclick="submitForm();" />
    </form>
  
  <p id="output"></p>

</body>
</html>
JavaScript Funktionen
Quellcode:var http = null;

function ajaxCallback() {
    if(http.readyState == 4) {
        if(http.status == 200) {
            newPar = document.createElement("p");
            newPar.innerHTML = http.responseText;
            document.getElementById("output").appendChild(newPar);
        }
        else {
            alert("HTTP: " + http.status);
        }
    }
}

function ajaxRequest(filename, data) {
    // switch browser types
    if (window.XMLHttpRequest)
        http = new XMLHttpRequest();
    else if (window.ActiveXObject)
        http = new ActiveXObject("Microsoft.XMLHTTP");

    // perform request
    if (http != null) {
        http.open("POST", filename, true);
        http.onreadystatechange = ajaxCallback;
        http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");        
        http.send(data);
        return 1;
    }
    else
        return 0;
}

function submitForm() {
    text = document.getElementById("text_input").value;
    if(text) {
        ajaxRequest("responder.php", "var=" + text);
    }
}
responder.php
Quellcode:<?php echo "Input: ".$_POST['var']; ?>

--


Dieser Beitrag wurde am 16.09.2008 um 23:23 von LeJean bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
17.09.2008, 12:45
RikkuZooo



Ah, danke LeJean funktioniert jetzt alles wunderbar, vielen danke. :)

--

AirChina Mobile

zum Seitenanfang zum Seitenende Profil || Suche
009
17.09.2008, 21:24
Tuboatse-Harald



Wieso wird Frauen hier eigentlich grundsätzlich in den Arsch gekrochen? Jeden anderen Typen hätte man (berechtigterweise) in die Wüste geschickt, RTFM style.

--

Twisted and Brainfire.
Das Fleisch ist willig und der Club ist eine Fleischerei!

zum Seitenanfang zum Seitenende Profil || Suche
010
17.09.2008, 21:25
LeJean



Nein, in dem Fall hätte ich sonst auch so geantwortet.
Editiert: Ausserdem weißt du selbst, wie schnell sowas da reingetippt ist.

--


Dieser Beitrag wurde am 17.09.2008 um 21:39 von LeJean bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
17.09.2008, 22:13
Bluthund



Quellcode:mail(".$_POST[to]."@u-ac.net", "Mail Script", $_POST[message], "From: $_POST[from]"); Und warum sagt ihr bei soviel Freundlichkeit niemand, dass mit so ner naiven ServerSide-Implementation mehr geht als nur eMails an die vom Ersteller gedachten Adressen versenden.

Jetzt ist sogar noch nen "Captcha" hinzugekommen (JS DrawBotBoot()-Routine). Man muss ne Additionsaufgabe lösen, um eine eMail loszuschicken. Doof nur dass das Ergebnis im JS steht (MathC) und die Verifikation nur clientseitig passiert (sprich nutzlos ist). Gut man muss sich die Variable Q ausgeben lassen um ranzukommen aber das ist wohl eher nicht das Hindernis.

Sry Rikku, aber das (zusammen mit den Sachen aus dem ICQ) schon fast nen Post bei TDWTF wert.

@LeJean:
Fertig funktionierender SourceCode ist nie die Lösung eines Problems.
Denn wenn wir uns den JS-Code auf u-ac.net jetzt ansehen wird da in ein <p>-Element geschrieben, dass es nicht gibt, weil du es so im Beispiel hattest und sie es kopiert hat. Sie hat selbst ihre eMail.php in responder.php umbenannt. Lernerfolg = 0

edit: Hindernis mit doppel s *autsch* ^^

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 17.09.2008 um 22:39 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
17.09.2008, 22:20
LeJean



So war das natürlich nicht gedacht, da hast du Recht dass das keinen Lernerfolg bringt und bei einfachem C+P sogar noch Sicherheitslücken bringt.
Ich erwarte, dass man solche Lösungen liest, anpasst und nochmal verifiziert. Das ist Beispielcode, der das Prinzip zeigen soll, keine fertige Patentlösung!

--

zum Seitenanfang zum Seitenende Profil || Suche
013
17.09.2008, 23:37
Bluthund



Wie du schon richtig in #010 geschrieben hast, weiß jeder, der sowas schonmal gemacht hat, wie schnell es runtergetippt ist. Daraus kann man aber auch ableiten, dass man für sowas keinen Beispielcode sondern sich einfach mal ein paar Minuten/Stunden Zeit für RTFM benötigt.
Gut du wolltest das Prinzip anhand eines kurzen Beispiels darlegen und konntest ja nicht wissen, dass sie es einfach kopiert ohne groß reinzukucken. Aber manchmal muss man die Leute einfach vor sich selber schützen ;) #007 hätte ja prinzipiell auch ohne teh codez ausreichend Informationen vermittelt.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
014
18.09.2008, 09:25
RikkuZooo



ach dann lass ich das alles weg und da kommt garnichts hin...

--

AirChina Mobile

zum Seitenanfang zum Seitenende Profil || Suche
015
18.09.2008, 12:58
Deathstar



Zitat:
Tuboatse-Harald postete
Wieso wird Frauen hier eigentlich grundsätzlich in den Arsch gekrochen? Jeden anderen Typen hätte man (berechtigterweise) in die Wüste geschickt, RTFM style.
Kann ich so nicht bestätigen, mir wurde ebenfalls nen Tool in C gecoded. Kommt halt nur drauf an, wie man fragt.

--

zum Seitenanfang zum Seitenende Profil || Suche
016
18.09.2008, 14:48
Bluthund



Zitat:
RikkuZooo postete
ach dann lass ich das alles weg und da kommt garnichts hin...
Im ICQ hast du heut morgen noch geschrieben, du hättest es gefixt und würdest die Nutzereingaben jetzt am Server prüfen. Delete != Fix

@Deathstar:
Dein Problem war ein anderes. Du hast explizit nach einem fertigen Tool(/fertigem Code) oder Lösungsansätzen gefragt. Im Endeffekt hast du beides bekommen: Code, der lief, und ne Reihe von guten Ratschlägen über die du dann ne eigene Lösung erarbeiten konntest.
Außerdem war dein Problem relativ spezifisch im Gegensatz zu dem hier, das im Prinzip nix weiter braucht als nen simples AJAX-Gerippe, das man um die Anzahl der Parameter, die man benötigt, erweitert.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
017
18.09.2008, 20:44
RikkuZooo



klar aber: delete = fix ne das problem ist das immernoch in der .js die parameter zu finden sind die an die php übergeben werden und da weis ich net 100% ob das geht PS denn mathe wert wurde auch in der php abgefragt...

--

AirChina Mobile

zum Seitenanfang zum Seitenende Profil || Suche
018
18.09.2008, 23:39
Bluthund



Nimm dir mal ein paar Sekunden mehr Zeit für die Beiträge... Im ICQ sind deine Nachrichten doch auch verständlich. Warum also hier anders?

Im JS werden immer die Parameter zu finden sein solange du per XMLHTTPRequest gegen den Server sendest. Sie stehen ja auch in Form der Namen der input-Elemente im HTML-Code wenn du sie über nen normales form versendest (unabhängig der genutzten Request-Methode).
Du solltest davon wegkommen zu versuchen dem Nutzer sämtliche Einzelheiten zu verschweigen, was ohnehin nicht drin ist (siehe auch). Dazu zählt auch dieses total hirnrissige "verschlüsseln" (eigentlich das völlig falsche Wort hier) des JS-Codes. Ich weiß der erste Teil des Codes ist nicht von dir und war schon so aber deinen (lies: Jeans) Teil hättest du auch einfach so einfügen können. Denn das ist Spielerei und hält höchstens die Leute davon ab reinzuschauen, die ohnehin keine Ahnung haben.
Was du anstreben solltest, ist sinnvolle Verarbeitung und Prüfung von Nutzereingaben am Server, damit kannst du solchen Sachen wesentlich gezielter vorbeugen als solche sinnlosen Techniken wie o.g. "Code-Obfuscation" zu nutzen. Dazu gehört auch, dass du für die eMail-Adressen zB IDs vergibst und dann anhand derer am Server entscheidest wo die Mail hingeht und nicht einfach "@u-ac.net" anhängst und dich drauf verlässt, dass der Input nur von deinem form kommt, wo nur gewisse Werte vorkommen.

Das Problem mit deiner Additionsaufgabe war/ist folgendes:
Die Aufgabe wurde vom JS generiert. Sprich auf Clientseite. Damit der Server überhaupt weiß um was es geht musst du ihm die Werte die auf der Clientseite per random erzeugt worden sind mitteilen
*ZONK*
In dem Moment wo der Client dem Server sagt, was da steht (oder stehen soll) untergräbst du den Sinn der Aktion. Denn dann kann sich der Client aussuchen was er gefragt wurde. Die Aufgabe hat am Server zu entstehen (davon abgesehen ist parsebarer Text nur nen geringes Hindernis, aber das ist nen andres Kapitel) und wird dem Client mitgeteilt. Aber die Aufgabe geht auf keinen Fall vom Client zurück an den Server (in welcher Form auch immer). Das einzige was zurückkommen sollte, ist das vom Client errechnete Ergebnis. Das ist natürlich nicht ganz einfach mit der Implementierung, da HTTP zustandslos ist aber lässt sich ja zB mit Cookies handeln.
Darüber hatten wir ja bereits bei der vorherigen Version der Seite und deren Gästebuch gesprochen, aber du hast es hier wieder getan und damit den Sinn der ganzen Aktion von vornherein selbst untergraben.
PS: Prinzipiell brauchst du für nen Kontaktformular auch kein Captcha. Denn wer hat schon Interesse daran automatisiert irgendetwas an 2 vielleicht 3 eMail-Adressen zu versenden?! Und wenn du trotzdem eins haben willst, nimm eins der vielen verfügbaren und versuch nicht jedesmal das Rad neu zu erfinden und dafür Ziegelsteine zu nehmen...

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 19.09.2008 um 00:00 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
019
19.09.2008, 13:31
Krifitze



Schreib deine E-Mail Adresse hin, zusätzlich einen Mailto-Link und gut is.
Kontaktformulare sind nervig und mit Captcha sowieso.

Adresse aber bitte nicht "mail {[(aett)]} domain {[(dottt)]} com" oder als Bild oder sonstige Späße sondern einfach nur "mail@domain.com"

--

Website

zum Seitenanfang zum Seitenende Profil || Suche
020
19.09.2008, 13:36
Bluthund



Zitat:
Krifitze postete
Adresse aber bitte nicht (...) als Bild (...)

Zu spät, Rikku war schneller.

edit:
Was mich bisschen verwundert, ist die Tatsache, dass die Bilder kein onClick-Event haben, dass dynamisch aus irgendwelchem Zeichen-Kauderwelsch mittels eval() und replace() nen mailto-Link zusammenbastelt und diesen dann aufruft *rolleyes*

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 19.09.2008 um 13:44 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche