php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 11 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 02-05-2014, 10:15
Gfelli
 Registrierter Benutzer
Links : Onlinestatus : Gfelli ist offline
Registriert seit: May 2014
Beiträge: 6
Gfelli befindet sich auf einem aufstrebenden Ast
Standard Javascript in PHP-Funktion

Hallo zusammen

Folgendes Problem: Ich verwende eine PHP-Klasse, um Mails als Javascript verschlüsselt im Quelltext darzustellen. Der Outpout ist dann wie folgt:

Code:
<script type="text/javascript">
//<![CDATA[
var x6="";for(var r7=0;r7<396;r7++)x6+=String.fromCharCode((")s%2%BO44Mx\"%:)s%2#GOBM#GNDIBM#G==;%B=Oe\'%{!y@x%\" Uzs%U\"vw::4Nc)G0:-w.dIIG7657=;-7>-:dI<01;U0:-.dw$N5)1n4<7aNU:-8n4)+-OVwV/SInnIU;=*;<:OXPPRN;=8jj87:j<jNU:-8n4)+-OVjV/SIoIU;=*;<:OXPPRIgIU+0):h<OWPRN/.-n4n41$@Y-+\'\'0NU:-8n4)+-OV\'V/SIIPRN$NIG7657=;-]7=<dI<01;U0:-.d$N$NIe;=887:<MJ@WW[Wb/.-]n4n41]MJ@]WWWWY-b+0cV])eNU:-8n4)+-OV]V/SIwIU;=*;<:OXPP4@uzs%U\"vwS\':#G;?:B+CG;=B+Ex;7:CGB?GG;=B<G=ED;Mw)s~:%B;".charCodeAt(r7)-(-40+58)+-3+66)%(120-25)+0x20);document.write(eval(x6))
//]]>
</script>
Diese Klasse rufe ich mit einer PHP-Funktion "getEncodedMail" auf:

Code:
require_once('./includes/emailcode.class.php');
$emailcode = new ClassEmailcode();
return $emailcode->emailgetencode($mail, $text);
Gebe ich den Return mit echo aus, funktioniert das einwandfrei und der Output im Quelltext ist wie oben gepostet. Nun möchte ich den Return aber in einer weiteren PHP-Funktion ("bbcode2html") nutzen, die allerlei Tags und Zeichen durch bestimmte andere ersetzt.

Ich suche in dieser Funktion nach "/\[mail=([.-_a-z0-9@]*)\]([.-_a-z0-9@]*)\[\/mail\]/" und ersetze mit str_replace den Treffer durch den Return aus der Mail-Funktion. Das Resultat gebe ich in der bbcode2html-Funktion ebenfalls als Return aus - das Resultat im Quelltext ist dann wie folgt:

Code:
<script type="text/javascript"><br />
//<![CDATA[<br />
var qO="";for(var kl=0;kl<630;kl++)qO+=String.fromCharCode(("~iz({;E*pb;?lSu29YZ}Lsan^>M_Q@zX\\8mTiwWPyVJK=`{q">ok|5rRt~jIx\":A[O!<v NU#*4j@E**4z?4y=E*YxjV9uVI8z\\N9J9yTA!rT[@x8zNAXA@InMY\"mu`x}{VI8z\\NX;wr\\@NoT2>ta` q}qY`iujV\\AQ">}: t8I~J9J=|Y[s}wXb~T\"rIwl5q}qY`iujV\\AQ">}\"5t8I~JzM9Ri[@Ji[>IZ?loZM5J^;9R\\AVVi=S\"Z?poZIwq8`>`TujoX2Q~L?Y`@us">YI!I8Xb5\\zs`Z;NQ}Ai5zI9JX@5~XM=|Y:~q9Jb~TA!rT[b:i2s`T[@\"nMY\"mu`x}{VI8z\\NX;w~X;iJn`>`i[b\"n;NVnJiRi{@~TuSK8Myti;Nq}S5J9`:TLS\"o*Cnwz0~iz(ngE8CngD;8@Cng3E<1$z?E0{;6qvlm!Wn0y=6kpizI|0ng11DD9@1%0{;6qvlm!Wn0y=6kpizI|0ng3911DD9:1%0{;6qvlm!Wn0y=6kpizI|0ng3:11DD>1%{;6qvlm!Wn0y=6kpizI|0ng3;11Cj@3E[|zqvo6nzwuKpizKwlm0z?FFF9>40z?FFF@1.:==4z?.:==1&Cm~it0j@6{}j{|z084:;911".charCodeAt(kl)-(8*1+0)+79-16)%(2*9+77)+98-66);document.write(eval(qO))<br />
//]]><br />
</script>
Soll heissen: Alle "\n" aus der Mail-Klasse werden nun im Quelltext zwar als Zeilenumbrüche dargestellt, aber zusätzlich auch noch als "<br />" ausgegeben. Dadurch funktioniert das Script zur Mailadressen-Verschlüsselung nicht mehr.

Wie bringe ich die "<br />"-Tags aus dem doppelten Return im Quelltext wieder weg? Soviel vorneweg: Mit str_replace klappt es leider nicht.

Danke schon im Voraus für eure Hilfe!
Mit Zitat antworten
  #2 (permalink)  
Alt 02-05-2014, 19:27
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.595
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Mal davon abgesehen, dass das ziemlicher Käse ist (funktioniert auf Clients ohne JavaScript nicht), gibt es wesentlich sinnvollere und sichere Alternativen wie zB. HTTPS.

Außerdem ergibt das für mich keinen Sinn. Wenn die Mail verschlüsselt ist, gibt es keine BBCode-Tags mehr, die du ersetzen kannst. Auch die \n in der Mail sind dann nicht mehr als Klartext vorhanden, sondern verschlüsselt.

Hau den ganzen Dreck einfach weg und setz auf eine richtige Verschlüsselung und nicht so einen Kindergartenkram, der von jedem dahergelaufenen Hobby-Programmierer in 5 Sekunden geknackt wird.
Mit Zitat antworten
  #3 (permalink)  
Alt 02-05-2014, 20:09
Gfelli
 Registrierter Benutzer
Links : Onlinestatus : Gfelli ist offline
Registriert seit: May 2014
Beiträge: 6
Gfelli befindet sich auf einem aufstrebenden Ast
Standard

Danke für dein Feedback. Ich habe mich wohl unklar ausgedrückt. Es geht nicht darum, eine Mail (also die Nachricht) zu verschlüsseln, sondern um die vor Robots geschützte Ausgabe einer Mailadresse.
Mit Zitat antworten
  #4 (permalink)  
Alt 02-05-2014, 20:18
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.595
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Auch in dem Fall wirst du alle Clients ohne JavaScript ausschließen. Bessere Alternative: Ein Kontaktformular.
Mit Zitat antworten
  #5 (permalink)  
Alt 02-05-2014, 21:15
Gfelli
 Registrierter Benutzer
Links : Onlinestatus : Gfelli ist offline
Registriert seit: May 2014
Beiträge: 6
Gfelli befindet sich auf einem aufstrebenden Ast
Standard

Kontaktformulare kommen dafür nicht in Frage. Ich möchte das gerne so mit Javascript realisieren und suche deshalb diese Lösung.
Mit Zitat antworten
  #6 (permalink)  
Alt 02-05-2014, 23:58
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Gfelli Beitrag anzeigen
Es geht […] um die vor Robots geschützte Ausgabe einer Mailadresse.
Mit sowas würde ich absolut keine Zeit mehr vergeuden …

Email-Adressen werden früher oder später bespammt, das können wir glaube ich als „Fakt“ ansehen.
Wenn die Spammer deine Adresse nicht aus einer Webseite auslesen können – dann bekommen sie sie halt auf anderen Wegen: Kauf von Adresslisten auf dem „Schwarzmarkt“, vom Trojaner den sich einer deiner Kontakte einfängt und der deren Adressbuch ausliest¹, …, – oder sie „raten“ sie letztendlich einfach, und feuern an multiple potentielle Kandidaten @domain (und support@… ist ja nicht so schwer zu erraten – und selbst eher zufällige Kombinationen werden von Spammern einfach auf gut Glück probiert, schließlich kostet sie der Mailversand so gut wie nichts).

Anstatt also in sowas überhaupt Zeit zu investieren, würde ich die lieber in sinnvolle Abwehrmaßnahmen stecken – also einen guten Spamfilter. Ohne kommt man heute sowieso nicht mehr aus.


¹ oder, und damit ist dein Schutz auch gleich umgangen: Ich implementiere das Adressen-Sammeln einfach als „Zusatz-Feature“ eines Browser-Addons – da brauche ich mich gar nicht mehr mit deinem „Schutz“ beschäftigen, sondern brauche einfach nur das DOM der Webseiten, die der Nutzer besucht, durchlaufen … und kann alle gefundenen Email-Adressen im Hintergrund an meinen Server senden, während das Addon vordergründig seine „gute Arbeit“ im Sinne des Nutzers leistet …
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.

Geändert von wahsaga (03-05-2014 um 00:01 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 03-05-2014, 12:16
Gfelli
 Registrierter Benutzer
Links : Onlinestatus : Gfelli ist offline
Registriert seit: May 2014
Beiträge: 6
Gfelli befindet sich auf einem aufstrebenden Ast
Standard

Schaden kann es aber auch nicht, wenn noch ein solcher Schutz da ist und zumindest einen Teil blockt, oder?

Jedenfalls würde ich das so so trotzdem gerne zum Laufen bringen. Es ist gut möglich, daas ich in einem anderen Fall wieder mal ein Javascript durch einen doppelten Return wie hier schicken muss. Da werde ich froh sein, wenn dieses Problem hier gelöst werden konnte.
Mit Zitat antworten
  #8 (permalink)  
Alt 07-05-2014, 10:53
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Das Problem ist: Du steckst etwas in bbcode2html und hinten kommt etwas anderes heraus, als du möchtest. Dann solltest du diese Funktion umschreiben...

Hast du Code?
Mit Zitat antworten
  #9 (permalink)  
Alt 08-05-2014, 08:29
Gfelli
 Registrierter Benutzer
Links : Onlinestatus : Gfelli ist offline
Registriert seit: May 2014
Beiträge: 6
Gfelli befindet sich auf einem aufstrebenden Ast
Standard

Hier das ganze Konstrukt.

Die index.php öffnet functions.php und ctrl_freitext.php und ruft die im Controller enthaltene Funktion auf:

Code:
require_once('./admin/incl/functions.php');
require_once('./controllers/ctrl_freitext.php');
ctrl_freitext($pageid);
Die ctrl_freitext.php holt die Daten aus der DB, verarbeitet diese mit der Funktion bbcode2html(), öffnet tpl_freitext.php und ruft die Funktion tpl_freitext() auf:

Code:
$sql = mysql_query("SELECT content FROM " . $config['tb']['content'] . " WHERE navi = " . $pageid);
$abfrage = mysql_fetch_object($sql);
$data = bbcode2html($abfrage->content);
require_once('./templates/tpl_freitext.php');
tpl_freitext($data);
Die Funktion bbcode2html() macht folgendes:

Code:
$suchmuster = "/\[mail=([.-_a-z0-9@]*)\]([.-_a-z0-9@]*)\[\/mail\]/";
preg_match_all($suchmuster, $data, $treffer);
unset($treffer[0]);
$i = 0;
foreach($treffer[1] AS $id => $mailadresse) {
	$zielname = ($treffer[2][$i] != '') ? $treffer[2][$i] : $mailadresse;
	$data = str_replace('[mail='.$mailadresse.']' . $treffer[2][$i] . '[/mail]', getEncodedMail($mailadresse, $treffer[2][$i]), $data);
	$i++;
}
$trans = array(	''	=>	'<b>',
		''	=>	'</b>',
		'[ul]'	=>	'<ul>',
		'[/ul]'	=>	'</ul>',
		'[li]'	=>	'<li>',
		'[/li]'	=>	'</li>');
return strtr($data, $trans);
Die Funktion getEncodedMail() ruft die E-Mail-Klasse auf, die ich nicht selber geschrieben habe:

Code:
require_once('./includes/emailcode.class.php');
$emailcode = new ClassEmailcode();
return $emailcode->emailgetencode($mail, $text);
Die emailcode.class.php poste ich in einem separaten Beitrag, da diese etwas länger ist.

Die Funktion tpl_freitext() in der tpl_freitext.php macht nichts anderes, als die erhaltenen Daten mit echo auszugeben:

Code:
function tpl_freitext($data) {
	echo $data;
}
Wenn ich in der Funktion bbcode2html() die Funktion getEncodedMail() direkt mit Echo ausgebe, wird alles richtig angezeigt. Nur wenn ich das Javascript als Teil von $data über Return weitergebe, werden die <br />-Tags im Quelltext sichtbar. Da hilft es auch nichts, wenn ich in der bbcode2html() die Tags rausfiltere - die bleiben drin.

Wenn noch mehr Infos benötigt werden, bitte Info. Danke schon im Voraus für eure Hilfe!
Mit Zitat antworten
  #10 (permalink)  
Alt 08-05-2014, 08:31
Gfelli
 Registrierter Benutzer
Links : Onlinestatus : Gfelli ist offline
Registriert seit: May 2014
Beiträge: 6
Gfelli befindet sich auf einem aufstrebenden Ast
Standard

Die emailcode.class.php ist im Anhang (Code zu lang).
Angehängte Dateien
Dateityp: php emailcode.class.php (40,3 KB, 114x aufgerufen)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Funktion] Formular: JavaScript- Funktion ok, aber wie in php? andrassberlin PHP Developer Forum 5 17-02-2006 02:09
[Funktion] Javascript mit PHP verbinden Inuyasha PHP Developer Forum 15 29-10-2005 00:34
[Funktion] Javascript und php andrew PHP Developer Forum 2 16-06-2004 10:45
php-parameter für javascript-funktion oskar40 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 6 21-01-2004 00:34
[Funktion] JavaScript und PHP EdgarG.Schramm PHP Developer Forum 2 18-07-2003 17:32

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:46 Uhr.