Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
text in textarea problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
text in textarea problem


 
Kleinschmidt
04-02-2004, 15:23 
 
hallo leute hab ein kleines Problem,


ich hab ein kleines System zum schreiben von artikeln in php,

funktioniert auch , wenn ich z.b. (in ein Textarea)

07.Oktober 2003: - Am heutigen Tage wurde mit der Verabschiedung des so genannten 3. Hartz-Gesetzes im Bundestag auch 9 Nr. 3 AÜG so ergänzt, dass künftig eine angemessene Provision zulässig ist. Das BGH-Urteil vom 03.07.2003 ist somit überholt und nicht mehr massgeblich. Das dritte Hartz-Gesetz wird voraussichtlich nach Anrufung des Vermittlungsausschusses dann zum 1.1.2004 in Kraft treten. Künftig wird dann – wie in vielen Arbeitnehmerüberlassungsverträgen und Allgemeinen Geschäftsbedingungen auch bisher üblich – eine nach der Dauer der Überlassung gestaffelte Vermittlungsprovision wieder zulässig sein. Da das Gesetz eine angemessene Vermittlungsprovision zulässt, können die Gerichte künftig nur noch die Höhe der vereinbarten Provision überprüfen.

das schreibe wird alles in eines Datenbank übernohmen


nun das problem wenn ich es editire und die textarea wieder in die datenbank speicheren möchte geht es nicht kürze ich aber den text z.b.


07.Oktober 2003: - Am heutigen Tage wurde mit der Verabschiedung des so genannten
3. Hartz-Gesetzes im Bundestag auch 9 Nr. 3 AÜG so ergänzt,

auf die länge geht es wieder???

die Tasbelle hab ich schon auf longtext eingestellt (in der db)

hat jemand eine Ahnung warum das nicht geht ??



gruss sascha

 
Abraxax
04-02-2004, 15:31 
 
Original geschrieben von Kleinschmidt
hat jemand eine Ahnung warum das nicht geht ??<vermutung>

du verwendest method="get" für dein formular. method="post" sollte man bei formularen grundsätzlich nehmen.

</vermutung>

 
Kleinschmidt
04-02-2004, 15:33 
 
ich benutze POST

<FORM name="newsf" METHOD="POST" ACTION="<?php echo"postnews.php?edit=$edit&uin=$UIN"; ?>" enctype="multipart/form-data">



das Merkwürdige ist ja auch das es das gleiche formular ist also die gleiche datei (also die edit artikel == neu artikel) wird nur bei edit schon gefüllt das ich die daten ändern kann .

 
Abraxax
04-02-2004, 15:38 
 
schaue dir mal in beiden fällen den generierten quellcode an.

kann man das ding auch online sehen?

 
Kleinschmidt
04-02-2004, 15:45 
 
hmm leider kann ich das nicht online zeigen weil mit benutzerverwaltung und so ...

aber hier mal das formular (ausschnitt):



<textarea name="news" wrap="virtual" tabindex="2" ><?php echo stripslashes($news[news]);?></textarea>


hier wenn ich den Text editiert habe:



$sqlbefehl = "update $tab_news set titel='$titel',news='$news',time='$zeit',kategorie='$kategorie',name='$name',allowkom='0', newsformat='html',pdf='$pdf_alt' where id=$edit";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
//echo $sqlbefehl;



und hier wenn ich den Text neu eingebe !


$sqlbefehl = "Insert Into $tab_news
(titel,author,news,time,kategorie,status,name,allowkom,newsformat,pdf,stichwo)
Values('$titel','$user[id]','$news','$zeit','$kategorie','$statusneu','$name','0','html','','$stichworte')";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);

 
Abraxax
04-02-2004, 15:50 
 
auf welcher basis rufst du stripslashes() auf?

 
Kleinschmidt
04-02-2004, 15:53 
 
hab überall vor den sachen also bevor ich sie in die db speicher z.b.

$news = addslashes($news);

stehen

habs aber auch schon ohne probiert.

 
Abraxax
04-02-2004, 15:55 
 
d.h. du wendest das stripslashes() / addslashes() nicht auf basis von get_magic_quotes_gpc() / get_magic_quotes_runtime() an?

 
Kleinschmidt
04-02-2004, 16:00 
 
?? keine Ahnung was du mit:

get_magic_quotes_gpc() / get_magic_quotes_runtime()

meinst

bei mir sieht es nur so aus :


// ###################### Neue News ############################################

//upload
$uploaddir = 'http://www.+++++++++++++++++++/';
$uploaddir = addslashes($uploaddir);
// Einfuegen in die Datenbank vorbereiten, indem
// vor irgendwelche Sonderzeichen Backslashes gesetzt werden
//das File ansich
$pdf = addslashes($pdf);
$titel = addslashes($titel);
//$news = addslashes($news);
//Uhrzeit
$ticktack = date("d_m_Y");
$ticktack = addslashes($ticktack);
//zusammensetzen des neuen namens der datei
$neuer_name= $titel."_".$ticktack."_".$_FILES['pdf']['name'];
// nach umlauten durchsuchen und ersetzen
$neuer_name=preg_replace( array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/"),array("ae","oe","ue","Ae","Oe","Ue"), $neuer_name);
//leer und sondezeichen ersetzen
$neuer_name=addslashes($neuer_name);
//upload
move_uploaded_file($_FILES['pdf']['tmp_name'], "upload/".$neuer_name);
// Pfad in Datenbankspeichern
$track_dir= $uploaddir.$neuer_name;
$track_dir =addslashes($track_dir);

// Abfrage ob schon ein pdf vorhanden oder ein neues hochgeladen werden soll
if ($pdf==''){
//$pdf_alt =addslashes($pdf_alt);
$sqlbefehl = "Insert Into $tab_news
(titel,author,news,time,kategorie,status,name,allowkom,newsformat,pdf,stichwo)
Values('$titel','$user[id]','$news','$zeit','$kategorie','$statusneu','$name','0','html','','$stichworte')";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
}
else{
$sqlbefehl = "Insert Into $tab_news
(titel,author,news,time,kategorie,status,name,allowkom,newsformat,pdf,stichwo)
Values('$titel','$user[id]','$news','$zeit','$kategorie','$statusneu','$name','0','html','$track_dir','$stichworte')";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
}


und

//############ Update ##########################################################
elseif ($edit) {

//$news = addslashes($news);

//elseif($pdf !=''){

//uploadverzeichniss
$uploaddir = 'http://www.+++++++++++++++++++++++/';
//leerzeichen entfernen
$uploaddir = addslashes($uploaddir);
// Einfuegen in die Datenbank vorbereiten, indem
// vor irgendwelche Sonderzeichen Backslashes gesetzt werden
//das File ansich
$pdf = addslashes($pdf);
//titel
$titel = addslashes($titel);
//Uhrzeit
$ticktack = date("d_m_Y");
$ticktack = addslashes($ticktack);


//zusammensetzen des neuen namens der datei
$neuer_name= $titel."_".$ticktack."_".$_FILES['pdf']['name'];

//Umlaute suchen und ersetzen
$neuer_name=preg_replace( array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/"),array("ae","oe","ue","Ae","Oe","Ue"), $neuer_name);

$neuer_name=addslashes($neuer_name);


//upload
move_uploaded_file($_FILES['pdf']['tmp_name'], "upload/".$neuer_name);

// Pfad in Datenbankspeichern
$track_dir= $uploaddir.$neuer_name;
$track_dir =addslashes($track_dir);

//
// Abfrage ob schon ein pdf vorhanden oder ein neues hochgeladen werden soll
if ($pdf==''){
$pdf_alt =addslashes($pdf_alt);

$sqlbefehl = "update $tab_news set titel='$titel',news='$news',time='$zeit',kategorie='$kategorie',name='$name',allowkom='0', newsformat='html',pdf='$pdf_alt' where id=$edit";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
//echo $sqlbefehl;
}
else{
$sqlbefehl = "update $tab_news set titel='$titel',news='$news',time='$zeit',kategorie='$kategorie',name='$name',allowkom='0', newsformat='html',pdf='$track_dir' where id=$edit";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);
}
echo "<center>Artikel geändert !</center>";
}

 
Abraxax
04-02-2004, 16:02 
 
Original geschrieben von Kleinschmidt
?? keine Ahnung was du mit:
get_magic_quotes_gpc() / get_magic_quotes_runtime()
meinst [...]also ist die antwort nein....


ich habe mit deinen code mal nicht angesehen.... ich denke, deine antwort sagt mir schon alles.

schaue dir die beiden funktionen mal bei www.php.net an. auch ist eine suche im forum zu beiden funktionen sehr hilfreich.

damit solltest du dann dein problem durchaus in den griff bekommen.

 
Kleinschmidt
04-02-2004, 16:08 
 
hmm also im php.net stht doch nur das man es abfragen kann mit der einen und ändern mit der anderen funktion nur nicht was man damit anfängt ?

gut ich schau mal hier im forum unter "suche".


Bloß warum funktioniert es denn wenn ich einen Neuen Artikel speicher also mit langen text ??? und wenn ich ihn editire und ihn ändere nicht mehr ???? also ausgelesen und angezeigt wird er ja.

 
Kleinschmidt
04-02-2004, 16:15 
 
also hab mir ein paar artikel durchgelesen zu dem thema aber ich werde nicht so recht schlau draus ..

 
Abraxax
04-02-2004, 16:19 
 
Original geschrieben von Kleinschmidt
hmm also im php.net stht doch nur das man es abfragen kann mit der einen und ändern mit der anderen funktion nur nicht was man damit anfängt ?das sollte auch dabei stehen... ;) schaue dir auch die anderen zum thema gehörenden fkt's an.

Original geschrieben von Kleinschmidt
gut ich schau mal hier im forum unter "suche".gut.

Original geschrieben von Kleinschmidt
Bloß warum funktioniert es denn wenn ich einen Neuen Artikel speicher also mit langen text ???weil du stripslashes() und addslashes() sinnfrei verwendest ohne zu prüfen, ob es sinn macht. -> tipp. zur db hin gehts mit mysql_escape_string() -> auch hiernach kannst du suchen.

Original geschrieben von Kleinschmidt
und wenn ich ihn editire und ihn ändere nicht mehr ???? also ausgelesen und angezeigt wird er ja. ja. aber hatte ich dich nicht mal um quellcode gebetet? kann es sein, dass du ggfls noch ein " im html-code zuviel hast. also im text aus der db. -> htmlentities() -> suche im forum und bei php.net

Original geschrieben von Kleinschmidt
also hab mir ein paar artikel durchgelesen zu dem thema aber ich werde nicht so recht schlau draus .. was verstehst du denn nicht?

ich habe es hier mehrfach ausführlich beschrieben, andere von uns aber auch.

 
Kleinschmidt
04-02-2004, 16:56 
 
sorry bin halt nicht der php und mysql freak da fallen mir solche sachen eben nicht gerade leicht.

 
Abraxax
04-02-2004, 16:57 
 
Original geschrieben von Kleinschmidt
[...] da fallen mir solche sachen eben nicht gerade leicht. ist ja kein problem. daher habe ich dir die tipps ja gegeben ....

ich denke mal, dass es jetzt funktioniert?

 
Kleinschmidt
04-02-2004, 17:17 
 
ach nix geht, ich blick das nicht.

 
Abraxax
04-02-2004, 17:20 
 
du hast doch bestimmt schon dir richtigen threads gefunden. oder?

eingabe via form:

- prüfen auf get_magic_quotes_gpc()
- bei 'aktiviert' (1) einfach stripslashes() machen.

speichern in die db:

- mysql_escape_string() anwenden

laden aus der db:

- prüfen auf get_magic_quotes_runtimes()
- bei 'aktiviert' (1) einfach stripslashes() machen.

ausgeben von daten:

- verwenden von htmlentities()


jetzt sollte es aber klarer sein. oder?

wenn nicht, kann ich dir auch nicht mehr helfen. :dontknow: :confused:

-----

hier noch ne mini-test-datei zum spielen ..... <?php

$tf = isset($_POST['textfeld']) ? trim($_POST['textfeld']) : '';
$ta = isset($_POST['textarea']) ? trim($_POST['textarea']) : '';

$tf = get_magic_quotes_gpc() ? stripslashes($tf) : $tf;
$ta = get_magic_quotes_gpc() ? stripslashes($ta) : $ta;

?>
<form action="" method="post">
<input type="text" name="textfeld" value="<?php echo htmlentities($tf); ?>"><br />
<textarea name="textarea" rows="10" cols="50"><?php echo htmlentities($ta); ?></textarea><br />
<input type="submit" name="" value=" test ">
<form>

<pre>
<?php
print_r($_POST);
?>
</pre>

<hr size="1">
<?php
show_source(__FILE__);
?>

 
Kleinschmidt
04-02-2004, 17:49 
 
hab unter php.net geschaut



<?php
$item = "Zak's Laptop";
$escaped_item = mysql_escape_string($item);
printf("Escaped string: %s\n", $escaped_item);
?>


o.k. dann hab ich versucht:

$news = mysql_escape_string($news)
zu machen hat nix gebracht..

also nun versuch ich es nochmal:




if ($edit != '') {

$sqlbefehl= "Select * FROM $tab_news where id = $edit";
$ergebnis = mysql_query($sqlbefehl, $serverid);
$news = mysql_fetch_array ($ergebnis);

$tnews = isset($news[news]) ? trim($news[news]) : '';
$tnews=get_magic_quotes_runtime() ? stripslashes($tnews) : $tnews;


<textarea name="news" wrap="virtual" tabindex="2" ><?php echo htmlentities($tnews); ?>





ist das so richtig ??




$tnews = isset($tnews) ? trim($tnews) : '';
$tnews = get_magic_quotes_gpc() ? stripslashes($tnews) : $tnews;

$sqlbefehl = "update $tab_news set news='$tnews' where id=$edit";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);




sonst weiß ich auch nicht weiter

 
Abraxax
04-02-2004, 17:54 
 
Original geschrieben von Kleinschmidt
ist das so richtig ??das obere sah schon mal besser aus....

Original geschrieben von Kleinschmidt
sonst weiß ich auch nicht weiter ich auch nicht...

aber du hast mysql_escape_string() beim updaten vergessen. auch solltest du vars NIEMALS direkt in einen string schreiben.
$sqlbefehl = "update ".$tab_news." set news = '".mysql_escape_string($tnews)."' where id = ".(int)$edit;

 
Kleinschmidt
04-02-2004, 18:09 
 
oh gott das wird ja immer schlimmer ...


was hab ich den bei dem oberen falsch gemacht?

- prüfen auf get_magic_quotes_gpc()
- bei 'aktiviert' (1) einfach stripslashes() machen.



$tnews = isset($news[news]) ? trim($news[news]) : '';
$tnews=get_magic_quotes_runtime() ? stripslashes($tnews) : $tnews;


kann mir nur denken das man trim doch nur beim eintargen in die db macht oder abfragt ?

???


und bei dem


$sqlbefehl = "update ".$tab_news." set news = '".mysql_escape_string($tnews)."' where id = ".(int)$edit;



hab den String ja nur für hier gekürzt da ja der ganze



$sqlbefehl = "update $tab_news set titel='$titel',news='$news',time='$zeit',kategorie='$kategorie',name='$name',allowkom='0', newsformat='html',pdf='$pdf_alt' where id=$edit";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);



zu lang ist

habs jetzt so gemacht



$sqlbefehl = "update $tab_news set titel='$titel',news='".mysql_escape_string($tnews)."',time='$zeit',kategorie='$kategorie',name='$name',allowkom='0', newsformat='html',pdf='$pdf_alt' where id=$edit";
if (!$ergebnis = mysql_query($sqlbefehl, $serverid))
echo mysql_error($serverid);



hab alles hochgeladen und ausprobiert ... keine änderung...

 
Abraxax
04-02-2004, 18:20 
 
ich habe keine lust mehr dir zu helfen, wenn du weiterhin meine ratschläge nicht annimmt und/oder total falsch umsetzt. sorry, aber das kann ich mir sparen.

 
Kleinschmidt
04-02-2004, 18:42 
 
oh man was soll ich den machen, ich kenn mich nun mal nicht so gut aus!

und das skript was ich habe is scho ziehmlich lang und komplex .
Und ich hab es nicht programiert, ich änder nur sachen daran.


Ich dank dir trotzdem für deine große hilfe.


wenn trotzdem ein auge auf das komplette skript werfen wilst hier :

 
Abraxax
04-02-2004, 18:46 
 
Original geschrieben von Kleinschmidt
wenn trotzdem ein auge auf das komplette skript werfen wilst hier : nein. will ich nicht.

schliesslich bist du auch nicht in der lage mal eben das extra für dich
gepostete mini-script oben mal zu testen, und damit zu spielen.
für sich betrachtet und NICHT IN DEINEM CODE.

ausserdem kannst du auf gleicher weise mal ein mysql-dummy machen.

desweiteren kotzt :kotz: es mich an, dass du noch nicht einmal in der lage
bist, mysql_escape_string() auf ALLE string richtung DB anzuwenden.
desweiteren hast du immer noch alle variablen in einem string direkt drin.

wenn du also noch nicht einmal die minimalsten ansätze hast, die
gegebenen tipps umzusetzen, kann/werde ich dir nicht mehr
helfen. :teach:

 
Kleinschmidt
04-02-2004, 19:08 
 
O.K. du hast sicherlich recht.



Ich werd mir den ganzen thread nocham rein ziehen und nochmal von vorn anfangen deine Tips mir genauer anzuschauen.


ja und du hast auch recht ich hab nicht mit deinem extra geposteten Skript rumgespielt. ich hab gleich versucht die sachen umzusetzen.

...

trotzallem danke ich dir für deine Hilfe.

gruss sascha

 
BlobBanana
05-02-2004, 00:45 
 
Hast du dir mal den editierten String ausgeben lassen, bevor du ihn in die DB schreibst?

Also

echo $_POST['news'];

// wobei es so aussieht als wenn du Register Globals On hast,
// also reicht
echo $news;


Mich stört auch irgendwie das wrap="virtual" in deiner Textarea.
Mach das mal weg (das gehört eh nicht zum HTML-Standard). Damit sollte dein Problem aber eigentlich nix zu tun haben ...

 
Kleinschmidt
05-02-2004, 10:48 
 
Hallo BlobBanana,


ja hab mir den String mal ausgeben lassen mit hilfe von Abraxax extra für mich geschrieben skriptes.

hab den Fehler gefunden, denk zwar das das unsauber ist aber ich hab das "wrap" und enctype... gelöscht seitdem läuft es wieder tadellos.

Aber trotzdem danke.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:58 Uhr.