| 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! Post your PHP questions here! |
 |
|

30-05-2008, 10:46
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Das ganze htmlspecialchars Gedöns ist völlig überflüssig!!
Auch die slash verwurstung ist, nunja, unvollkommen.
Benutze die Escape Funktion des DB Treibers wenn nötig.
Welche DB verwendest du überhaupt?
Auch das jpg Gedöns ist falsch, denn es ist ja gar kein Jpg, oder?
|

30-05-2008, 10:54
|
|
aSkInG
Newbie
|
|
Registriert seit: Aug 2006
Beiträge: 13
|
|
Doch zu testzwecken ist es noch ein jpg. nachher wird das für das favicon angepasst.
ich habe jetzt anstelle jpeg jpg genommen.
Wieso ist das htmlspecialchars und slashes unsinnig? Was ich so gelesen habe, da steht das man das eigentlich immer machen sollte. Nun ja, ich kann das auch wegnehmen. Ich nutzte MySQL.
Nun ich habe auch schon einen kleinen Erfolg, und zwar wird ein kleiner Teil des Bildes auch angezeigt. Aber danach bleibt alles weiß
Hier mal den Code von makeimage.php
PHP-Code:
header("Content-type: image/jpg");
include("../config/config.php");
include("../includes/functions.php");
$id = $_GET['id'];
$db = DB_CONNECT($DB_HOST, $DB_USER, $DB_PASSWORT, $DB_NAME);
$abfrage = "SELECT seiten.favicon FROM seiten WHERE seiten.id = '$id'";
$result = $db->query($abfrage);
$result = $result->fetch_assoc();
$favicon = htmlspecialchars_decode($result['favicon']);
$favicon = stripslashes($favicon);
echo $favicon;
|

30-05-2008, 11:07
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
Wieso ist das htmlspecialchars und slashes unsinnig? Was ich so gelesen habe, da steht das man das eigentlich immer machen sollte. Nun ja, ich kann das auch wegnehmen. Ich nutzte MySQL
|
Schmeiß das Buch weg...
Nutze nur bei dem Eintragen: mysql_real_escape_string()
Beim Lesen brauchst du nix zu machen. Nur die richtigen Header setzen und zum Browser schicken.
|

30-05-2008, 11:36
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
Du scheinst kein Anhänger von htmlspecialchars zu sein etc. Darf ich nebenbei fragen warum?
|
Ich bin ein ausgesprochener Fan von htmlspecialchars() und htmlentities() !!
"Image-binär-Daten" !== "HTML"
Oder?
Diese beiden Funktionen sind bei der Erzeugung von HTML ungemein hilfreich!
Aber du willst ja kein HTML erzeugen, sondern ein Bild in der DB speichern. Also sind es definitiv die falschen Funktionen für diesen Zweck.
Schau dir die Seiten im Handbuch nochmal ganz genau an:
http://de3.php.net/manual/de/functio...ecialchars.php
http://de3.php.net/manual/de/function.htmlentities.php
Steht das irgend etwas über DBs oder so...?
Zeige doch mal deinen Code wie er jetzt aussieht!
Das Lesen und das Schreiben.
Geändert von combie (30-05-2008 um 11:39 Uhr)
|

30-05-2008, 11:47
|
|
aSkInG
Newbie
|
|
Registriert seit: Aug 2006
Beiträge: 13
|
|
Okay,
ich habe aber eine andere MySQL Verbindung, daher will mysql_real_escape_string nicht. DAher habe ich einfach alles rausgenommen.
Hier erstmal die Formular Daten:
PHP-Code:
if(isset($_FILES['favicon']['tmp_name']) && $_FILES['favicon']['tmp_name'] != '')
{
// Hier unbedingt noch mal überprüfen, ob es sich um die richtige Größe etc. handelt!
// Alles andere löschen!
$favicon = $_FILES['favicon']['tmp_name'];
$size = $_FILES['favicon']['size'];
$image = fopen($favicon, 'r');
$inputdata = fread($image, $size);
//$inputdata = htmlspecialchars($inputdata);
//$inputdata = addslashes($inputdata);
//$favicon = htmlspecialchars($favicon);
//$favicon = addslashes($favicon);
} else {
$favicon = NULL;
}
nun das senden und ausführen an die DB
PHP-Code:
// Es wurden nun alle empfangenen Daten in kurze Variablen gespeichert!!!!
// Nun alle Daten in die Datenbank eingeben und bei Erfolg, eine Erfolgsmeldung ausgeben.
$db = DB_CONNECT($DB_HOST, $DB_USER, $DB_PASSWORT, $DB_NAME);
$select = "INSERT INTO seiten VALUES ('" . $id . "', '" . $name
. "', '" . $menuname ."', '" . $menu . "', '" . $inhalt
. "', '" . $inputdata . "', '" . $meta_name
."', '" . $meta_keys ."', '" . $meta_author
. "', '" . $meta_beschreibung . "', '"
. $meta_titel ."','" . $guestbook ."')";
$doIt = $db->query($select);
if($doIt)
{
echo '<h1>Gratulation!</h1><p>Alle Daten wurden erfolgrecih eingespeichert!</p>
<p><a href="einstieg.php?PageId=seiten">Hiermit kehren Sie zur Administrationsoberfläche Zurück.</a>
</p>';
}
Nun die makeimage.php
PHP-Code:
<?php
header("Content-type: image/jpeg");
include("../config/config.php");
include("../includes/functions.php");
$id = $_GET['id'];
$db = DB_CONNECT($DB_HOST, $DB_USER, $DB_PASSWORT, $DB_NAME);
$abfrage = "SELECT seiten.favicon FROM seiten WHERE seiten.id = '$id'";
$result = $db->query($abfrage);
$result = $result->fetch_assoc();
//$favicon = htmlspecialchars_decode($result['favicon']);
//$favicon = stripslashes($favicon);
echo $result['favicon'];
?>
Na ja da hast du recht. Ich habe nur gelernt, das alles was in die DB rein geschrieben werden soll, so escapet werden sollte. Daher mache ich das.
|

30-05-2008, 11:52
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Gar nichts machen kann doch auch nur falsch sein!
Ohne das mysql_real_escape_string() wirds nichts!
Was "eine andere Verbindung" ist, weiß ich auch nicht...
Da bildest du dir was ein.
Und die sind ja immer noch da:
$favicon = htmlspecialchars_decode($result['favicon']);
$favicon = stripslashes($favicon);
Ich habe dir alles geschrieben, was ich dazu weiß!
Mach was draus....
Geändert von combie (30-05-2008 um 11:56 Uhr)
|

30-05-2008, 11:54
|
|
H2O
PHP Junior
|
|
Registriert seit: Jul 2007
Beiträge: 937
|
|
Zitat:
Original geschrieben von aSkInG
ich habe aber eine andere MySQL Verbindung, daher will mysql_real_escape_string nicht. DAher habe ich einfach alles rausgenommen.
|
mysqli_real_escape_string()
__________________
Gruss
H2O
|

30-05-2008, 12:02
|
|
aSkInG
Newbie
|
|
Registriert seit: Aug 2006
Beiträge: 13
|
|
Danke!
An euch beide!
es hat funktioniert! Ich kam wieder nicht auf das i, das verdammte
So klappt auch alles.
Ach ja, noch eins, ich danke dir für deine geduld, doch bin ich nicht beratungsresitent, ich habe lediglich vergessen die hier auszuklammern
Zumal ich das testen wollte, ob es so besser ist. War nicht der Fall. Habe ich erkannt.
Danke nochmal
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| 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.
HTML-Code ist aus.
|
|
|
|
PHP News
|