Zur Navigation

Eingelesene Mail als Bild darstellen oder Verschlüsseln [2]

11 andehrl

ich ersetze also
<a href="mailto:<?php echo $row_R1['mail'] ?>" class="ergebnisschriftmailer"><?php echo $row_R1['mail'] ?></a>

mit
<img src="email-script.php?id=<?php echo $recordID ?>" alt="" />


aber wie füge ich

$recordID = (int) $_GET['id'];

mit der datenbankabfrage
$colname_R1 = "-1";
if (isset($_GET['recordID'])) {
  $colname_R1 = $_GET['recordID'];
}
mysql_select_db($database_Eingabe, $Eingabe);
$query_R1 = sprintf("SELECT Eingabe.id,Eingabe.mail FROM Eingabe WHERE id = %s", GetSQLValueString($colname_R1, "int"));
$R1 = mysql_query($query_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);
$totalRows_R1 = mysql_num_rows($R1);$colname_R1 = "-1";
if (isset($_GET['recordID'])) {
  $colname_R1 = $_GET['recordID'];
}

in den ursprünglichen code ein??

<?php
$EMAIL=$_REQUEST['mail'];
// Set the content-type
header('Content-type: image/png');

// Create the image
$im = imagecreatetruecolor(350, 30);

// Create some colors
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = $EMAIL;
// Replace path by your own font path
$font = 'cour.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>

07.12.2010 18:40

12 Jörg

Zitat von andehrl
ich ersetze also
<a href="mailto:<?php echo $row_R1['mail'] ?>" class="ergebnisschriftmailer"><?php echo $row_R1['mail'] ?></a>

mit
<img src="email-script.php?id=<?php echo $recordID ?>" alt="" />

In deinem ersten Script verwendest du den Variablennamen $colname_R1, diesen musst du hier dann also auch einsetzen:

<img src="email-script.php?id=<?php echo $colname_R1 ?>" alt="" />

In dem Bilder-Script ersetzt du $EMAIL=$_REQUEST['mail']; durch folgenden Code:

$result = mysql_query("SELECT mail FROM Eingabe WHERE id = " .  (int) $_GET['id']);
$EMAIL = mysql_result($result, 0);

07.12.2010 18:56

13 andehrl

das script sieht insgesamt so aus:

<?php
$result = mysql_query("SELECT mail FROM Eingabe WHERE id = " .  (int) $_GET['id']);
$EMAIL = mysql_result($result, 0);
header('Content-type: image/png');
$im = imagecreatetruecolor(350, 30);
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
$text = $EMAIL;
$font = 'cour.ttf';
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
imagepng($im);
imagedestroy($im);
?>

ich hab den schatten rausgeschmissen.
mir ist alderdings der pfad für $font nicht klar weil ich in dreamweaver dem text immer über stylesheets seine attribute zugewiesen habe?

07.12.2010 19:19

14 andehrl

ich habe den code hier eingefügt:

<?php require_once('Connections/Eingabe.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_R1 = "-1";
if (isset($_GET['recordID'])) {
  $colname_R1 = $_GET['recordID'];
}
mysql_select_db($database_Eingabe, $Eingabe);
$query_R1 = sprintf("SELECT Eingabe.id, Eingabe.abfahrtsort, Eingabe.zielort, DATE_FORMAT(Eingabe.datum, '%%d.%%m.%%Y') AS datum_formatiert, TIME_FORMAT(Eingabe.zeit, '%%H:%%i') AS zeit_formatiert, Eingabe.hinfahrtladeflaeche, Eingabe.hilfeeinausladen, Eingabe.rueckfahrt, Eingabe.rueckfahrtladeflaeche, Eingabe.beschreibung, Eingabe.preis, Eingabe.marke, Eingabe.model, Eingabe.laderaumhoehe, Eingabe.laderaumbreite, Eingabe.laderaumlaenge, Eingabe.laderaumvolumen, Eingabe.treibstoff, Eingabe.getriebe, Eingabe.tempo, Eingabe.nutzername, Eingabe.passwort, Eingabe.mail, Eingabe.handy, Eingabe.tel FROM Eingabe WHERE id = %s", GetSQLValueString($colname_R1, "int"));
$R1 = mysql_query($query_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);
$totalRows_R1 = mysql_num_rows($R1);$colname_R1 = "-1";
if (isset($_GET['recordID'])) {
  $colname_R1 = $_GET['recordID'];
}

?>

<?php
$result = mysql_query("SELECT mail FROM Eingabe WHERE id = " .  (int) $_GET['id']);
$EMAIL = mysql_result($result, 0);
header('Content-type: image/png');
$im = imagecreatetruecolor(350, 30);
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
$text = $EMAIL;
$font = 'arial.ttf';
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
imagepng($im);
imagedestroy($im);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>mit-umzug-gelegenheit.de</title>
<script src="Scripts/swfobject_modified.js" type="text/javascript"></script>
<script type="text/JavaScript">
<!--
...

bekomme dann diese fehlermeldung:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /is/htdocs/wp10548565_XUUKREW8G9/www/2cMitumzugAngeboteEinfachergebnisdetails.php on line 51

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp10548565_XUUKREW8G9/www/2cMitumzugAngeboteEinfachergebnisdetails.php:49) in /is/htdocs/wp10548565_XUUKREW8G9/www/2cMitumzugAngeboteEinfachergebnisdetails.php on line 52

Warning: imagettftext() [function.imagettftext]: Could not find/open font in /is/htdocs/wp10548565_XUUKREW8G9/www/2cMitumzugAngeboteEinfachergebnisdetails.php on line 60
‰PNG  ??? IHDR??^??????ëfá•???5IDATxœíÁ1??? õOmo ??????????????????????????????à1{*?í„Ú????IEND®B`‚

ich habe zeile 51 & 52 und die fontzeile(59) und zeile 60 im script fett markiert.

07.12.2010 20:18

15 Jörg

Ich glaube, du hast da etwas grundsätzlich noch nicht verstanden: das Script, mit welchem du die Grafik erstellst, ist eine eigene, vollständige Datei!

Du hast hier zwei PHP-Dateien:

1. dein Script, welche das HTML-Dokument erzeugt, in welcher auch die Grafik eingebunden wird (über das img Element)

2. das Script, welches diese Grafik erzeugt - dieses trägt in einem oberen Codeabschnitt den Namen email-script.php - du kannst es aber natürlich auch anders benennen

Wenn du email-script.php?id=42 im Browser aufrufst, sollte eine Grafik angezeigt werden, die die Emailadresse des Datzensatz 42 anzeigt

mir ist alderdings der pfad für $font nicht klar weil ich in dreamweaver dem text immer über stylesheets seine attribute zugewiesen habe?

In Stylesheets kannst du angeben, welche Font ein Browser verwenden soll. In diesem Fall erstellst du aber eine Textgrafik auf dem Server. PHP benötigt dazu den Font, den du hierfür verwenden möchtest. Du musst also einen Pfad zu der ttf Datei angeben. Gegebenenfalls musst du diese Datei vorher auf deinen Webspace hochladen.

07.12.2010 21:15 | geändert: 07.12.2010 21:18

16 andehrl

ich habe eine neu datei mit dem namen email-script.php erstellt, eine datensatzgruppe eingefügt und den von dir angegebenen code angehängt. das es so noch nicht funktioniert war mir zwar klar, aber ich brauche doch die datensatzgruppe oder nicht? sieht jetzt so aus:

<?php require_once('Connections/Eingabe.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_R1 = "-1";
if (isset($_GET['recordID'])) {
  $colname_R1 = $_GET['recordID'];
}
mysql_select_db($database_Eingabe, $Eingabe);
$query_R1 = sprintf("SELECT mail FROM Eingabe WHERE id = %s", GetSQLValueString($colname_R1, "int"));
$R1 = mysql_query($query_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);
$totalRows_R1 = mysql_num_rows($R1);

mysql_select_db($database_Eingabe, $Eingabe);
$result = mysql_query("SELECT mail FROM Eingabe WHERE id = " .  (int) $_GET['id']);
$EMAIL = mysql_result($result, 0);
header('Content-type: image/png');
$im = imagecreatetruecolor(350, 30);
$white = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
$text = $EMAIL;
$font = 'Library/arialbd.ttf';
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
imagepng($im);
imagedestroy($im);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
</body>
</html>
<?php
mysql_free_result($R1);

?>


ich bekomme diese fehlermeldungen auch wenn ich die datensatzgruppe nicht einfüge:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /is/htdocs/wp10548565_XUUKREW8G9/www/email-script.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp10548565_XUUKREW8G9/www/email-script.php:46) in /is/htdocs/wp10548565_XUUKREW8G9/www/email-script.php on line 47
?PNG  ??? IHDR??^???????f????5IDATx???1??? ?Omo????????????????????????????????1{*???????IEND?B`?

auf meiner detailergebnisseite bekomme ich trotzdem das bild der mail angezeigt, riesengroß, aber es ist da?

07.12.2010 23:08

17 Jörg

Wie gesagt, handelt es sich bereits um ein vollständiges Script.

Die Zeile am Anfang benötigst du wohl, um eine Datenbankverbindung aufzubauen:

<?php require_once('Connections/Eingabe.php'); ?>

Der folgende Code macht in dem GRafik-Script aber keinen Sinn - löschen:

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_R1 = "-1";
if (isset($_GET['recordID'])) {
  $colname_R1 = $_GET['recordID'];
}
mysql_select_db($database_Eingabe, $Eingabe);
$query_R1 = sprintf("SELECT mail FROM Eingabe WHERE id = %s", GetSQLValueString($colname_R1, "int"));
$R1 = mysql_query($query_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);
$totalRows_R1 = mysql_num_rows($R1);

... dann sollte auch die Fehlermeldung verschwinden

Auch der folgende HTML-Code hat nichts in dem Script verloren - du willst doch eine Grafik erzeugen und nicht ein HTML-Dokument:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
</body>
</html>

Auch diesen Code brauchst du nicht mehr:

<?php
mysql_free_result($R1);

?>

07.12.2010 23:48

18 andehrl

hab alles überflüssige gelöscht. die bilder werden angezeigt und alles funktioniert :-)
ich bin trotzdem etwas irritiert, dass ich beim hochladen der datei email-script.php fehler angezeigt bekomme?

08.12.2010 00:34

19 Jörg

Was heißt "beim hochladen" - im FTP-Programm?

Und was die Fehler zu sagen haben, kann man schlecht deuten, wenn du uns diese nicht mitteilst.

08.12.2010 10:29 | geändert: 08.12.2010 10:29

20 andehrl

Zitat von Jörg
Was heißt "beim hochladen" - im FTP-Programm?

wenn ich von dreamweaver aus eine vorschau der datei auf dem testserver anschaue bekomme ich diese fehlermeldungen.


Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 4 in /is/htdocs/wp10548565_XUUKREW8G9/www/email-script.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp10548565_XUUKREW8G9/www/email-script.php:5) in /is/htdocs/wp10548565_XUUKREW8G9/www/email-script.php on line 6
?PNG  ??? IHDR??????????&*???BIDATh????0 ?t????]????`??:??? 3@??1? 3@??1? 3@??1?o????.&????IEND?B`?

die adresse im browser zeigt dann http://www.mit-umzug-gelegenheit.de/email-script.php. weise ich der adresse eine id zu wird mir die entsprechende mail als bild angezeigt (zb http://www.mit-umzug-gelegenheit.de/email-script.php?id=185)

08.12.2010 12:38