Thread Html5 contenteditable - PHP -> Perl (12 answers)
Opened by meier19 at 2016-04-19 17:13

topeg
 2016-04-19 23:22
#184485 #184485
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
display_save_text.cgi
more (14.0kb):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/perl

#Warnungen und Fehlemeldungen einschalten
use strict;
use warnings;

#das Script ist UTF-8
use utf8;

#CGI-Modul laden
#und sagen das alles UTF-8 ist
use CGI ( -utf8 );

#Modul um Fehler im Browser ausgeben
use CGI::Carp 'fatalsToBrowser';

#Modul um Dateien sperren zu können. Siehe "flock"
use Fcntl qw(:flock);

#Dateiname
my $storage_file = 'myText.txt';

#Default Wert, wenn nichts eingeben wurde.
my $str = 'Dies ist die Zeile, die verändert werden kann.';

# Das HTML das angezeigt werden soll
my $template = <<'EOHTML';
<!DOCTYPE html>
<html>
<head>

  <script>

    function myFunction () {
      var xr = new XMLHttpRequest();
      var url = "INSERT_URL_HERE";
      var text = document.getElementById("myDiv").innerHTML;
      var vars = "newText="+text;

      xr.open("POST", url, true);
      xr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
      xr.send(vars);
    }

  </script>

</head>
<body>

<h1>Hello World</h1>
Die nachfolgende Zeile kann Text aufnehmen:
<div id="myDiv" contenteditable="true" onblur="myFunction()">
<!--INSERT_TEXT_HERE-->
</div>

<body>
</html>
EOHTML

# neue CGI-Instanz erzeugen
my $cgi = CGI->new();

# schauen ob eine Datei mit dem text da ist,
# Daten mit UTF-8 kodierung lesen
if(open(my $fh, '<:encoding(UTF-8)', $storage_file)) {

  #Zeilenumbrüche nicht beachten
  local $/=undef;

  # ganze Datei lesen
  $str = <$fh>;

  close($fh);
}

# ein string wurde gesendet
if( my $s = $cgi->param('newText') ) {

  # Daten übernehmen
  $str = $s;

  # Datei zum schreiben öffnen, Daten mit UTF-8 Kodierung schreiben
  open(my $fh, '>encoding(UTF-8)', $storage_file) or die("ERROR OPEN $storage_file ($!)");

  # Datei sperren das nur ein Prozess schreiben darf
  flock($fh, LOCK_EX);

  # daten schreiben
  print $fh $str;

  # datei wider freigeben
  close($fh);
}

#platzhalter im Template ersetzen
$template=~s/<\!--INSERT_TEXT_HERE-->/$str/g;
$template=~s/INSERT_URL_HERE/$cgi->url()/eg;

#Header ausgeben der Inhalt ist UTF-8
print "Content-Type: text/html; charset=UTF-8\r\n\r\n";

# Ausgabe UTF-8 kodieren;
binmode(STDOUT,'encoding(UTF-8)');

#template ausgeben
print $template;


Aufruf: <dein_server>/cgi-bin/display_save_text.cgi

View full thread Html5 contenteditable - PHP -> Perl