include problemen bij nieuwsbrief

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rico

Rico

15/11/2006 16:10:00
Quote Anchor link
Hallo,

Ik ben bezig een nieuwsbrief te maken voor een site van me. De layout is klaar, alleen ik heb dus een dynamische inhoud die gegenereerd wordt uit de database. Deze inhoud include ik omdat het verschillende redelijk grote bestanden zijn, en anders is het geheel een hele lange tekst. Nu loop ik dus tegen het probleem dat als ik die nieuwsbrief in de db zet en hem daarna wil bekijken hij er netjes uitziet, maar ik mis de inhoud. Hij laat alleen de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? include bestand.php ?>
zien en niet wat dit bestand zou moeten genereren.

Ik heb ook al geprobeert om die losse delen appart in de db te krijgen maar dan loop ik tegen het probleem dat hij teksten met " s'avonds " niet pakt. Dus krijg ik daar een error op. ik probeer die tekst als \"$tekst\" in de db te krijgen maar krijg dan alleen $tekst als resultaat. Ik weet dat dit met de quotes te maken heeft, maar weet niet hoe ik die quotes goed kan krijgen om wel de tekst goed in de db te krijgen.

Ik hoop dat ik het een beetje duidelijk heb kunnen maken wat de problemen zijn.

Alvast bedankt voor jullie tijd.
 
PHP hulp

PHP hulp

23/12/2024 04:24:47
 
- wes  -

- wes -

15/11/2006 16:14:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
$mailing
= '<html>';
$mailing .= '<body>';
$mailing .= 'blablalbal , nu komt die var!';
$mailing .= $var;
$mailing .= 'zag je em! </body></html>';
?>
 
Joren de Wit

Joren de Wit

15/11/2006 16:15:00
Quote Anchor link
Bij input die je naar een database schrijft, gebruik je altijd mysql_real_escape_string() om dat soort errors te voorkomen.

Wat betreft het letterlijk weergeven en niet parsen van de php code, je gebruikt hier een short-open-tag, maar heb je die functie wel aan staan in je php.ini?

Gebruik anders in plaats van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? gewoon [code]<?php en kijk of het dan wel werkt.
 
Frank -

Frank -

15/11/2006 16:18:00
Quote Anchor link
De problemen met de quotes worden veroorzaakt doordat je helemaal niets aan beveiliging doet. User-input (vanaf de browser) MOET je ALTIJD beveiligen en in het geval van MySQL, gebruik je daarvoor de functie mysql_real_escape_string(). Waarom je de quotes binnen jouw SQL gaat escapen is mij volkomen onduidelijk, dat kan alleen maar fouten opleveren, ik heb het nog nooit nodig gehad.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?
$tekst
= mysql_real_escape_string($_POST['tekst']); // Beveiliging!!!
$query = "
INSERT INTO
  tabelnaam(
    kolomnaam
  )
VALUES(
  '"
.$tekst."'
)
"
;
?>

Verder krijg ik het vermoeden dat in jouw script de logica niet goed inelkaar steekt. Begin altijd eerst met de logica en de database-onderdelen en dan op het aller, allerlaastste moment ga je dan output genereren. Tot die tijd maak je alleen maar variabelen aan waarin een stukje data staat. In de output ga je die variabelen dan echoen.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Rico

Rico

15/11/2006 16:19:00
Quote Anchor link
Blanche schreef op 15.11.2006 16:15:
Bij input die je naar een database schrijft, gebruik je altijd mysql_real_escape_string() om dat soort errors te voorkomen.

Wat betreft het letterlijk weergeven en niet parsen van de php code, je gebruikt hier een short-open-tag, maar heb je die functie wel aan staan in je php.ini?

Gebruik anders in plaats van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<? gewoon [code]<?php en kijk of het dan wel werkt.[/quote]

Ik die short-open-tag aanstaan. Ik gebruik nooit [code]<?php altijd [code]<? . Maar heb het toch ff geprobeert, maar het probleem blijft hetzelfde.. :(
 
Rico

Rico

15/11/2006 16:23:00
Quote Anchor link
Hier heb ik een klein stukje code staan om een beter beeld te geven over die error van de tekst.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
$layout
= '
<a href="http://www.website.nl/bestand.php?id='
.$id.'">'.$naam.'</a>
<br><br>'
;
$layout .= ' \".$note.\"
</td>
</tr>'
;
?>


en bij $note gaat het dus fout. :(
Gewijzigd op 01/01/1970 01:00:00 door Rico
 
Jelle -

Jelle -

15/11/2006 16:24:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$layout
= '
<a href="http://www.website.nl/bestand.php?id='
.$id.'">'.$naam.'</a>
<br><br>'
;
$layout .= $note.'
</td>
</tr>'
;
?>

Edit: lol had nog shorttag omdat ik het overkopieerde van hier
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
 
Frank -

Frank -

15/11/2006 16:26:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php // NOOIT SHORTTAGS GEBRUIKEN!!! dit kun je lang niet altijd op een server aanpassen
$layout .= ' \"'.$note.'\"
        </td>
      </tr>'
; // quotes bij $note vergeten
?>

Het gebruik van shorttags is verkeerde zuinigheid. Het kost je geen enkele moeite om even 'php' in te tikken, maar je bent van de werking van je script wel ineens afhankelijk van de instellingen van je hostingprovider. En wanneer je deze instelling niet kunt aanpassen, dan ben je flink de klos. Nooit meer gebruiken dus!
 
Rico

Rico

15/11/2006 16:26:00
Quote Anchor link
Thx jordy en frank. Ik kwam er ff niet meer uit..

Maar weet iemand nog een oplossing voor die include ??

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? include bestand.php ?>
Gewijzigd op 01/01/1970 01:00:00 door Rico
 
Jelle -

Jelle -

15/11/2006 16:27:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

include "bestand.php";

?>
 
Rico

Rico

15/11/2006 16:32:00
Quote Anchor link
Die include staat als volgt. en hij moet hem dus als uitgevoerde code laten zien als ik hem uit de db haal, ipv alleen die mooie regel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? include 'bestand.php' ?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
$layout
= '
<a href="http://www.website.nl/bestand.php?id='
.$id.'">'.$naam.'</a>
<br><br>'
;
$layout .= ' <? include 'bestand.php' ?>
</td>
</tr>'
;
?>
 
Frank -

Frank -

15/11/2006 16:33:00
Quote Anchor link
Tja, weer een typisch gevalletje van geen error_reporting(E_ALL); gebruiken... Dan vraag je ook om problemen! Wanneer je dit wel gebruikt, krijg je direct een notice:
Use of undefined constant bestand - assumed 'bestand'
Use of undefined constant php - assumed 'php'
 
Rico

Rico

15/11/2006 16:38:00
Quote Anchor link
Ik krijg dus geen errors hierop, alleen hij zet de regel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? include 'bestand.php' ?>
in de db tussen de tekst, ipv de code die dat script zou moeten genereren.. :S

Of is dit probleem niet te omzeilen??
 
Frank -

Frank -

15/11/2006 16:47:00
Quote Anchor link
Waarom include je een bestand op het moment dat je output genereert? Ik heb de includes altijd bovenaan staan en heb dan ook nog nooit een probleem met een include gehad. Ik snap dan ook niet wat je bedoelt met 'hij zet de regel ... in de db tussen de tekst'. Hoe kan een include in hemelsnaam in de database terecht komen?
 
Joren de Wit

Joren de Wit

15/11/2006 16:50:00
Quote Anchor link
Je kunt natuurlijk niet een pagina includen binnen de declaratie of concatenatie van een variabele. Als je de inhoud van een bepaald bestand aan een bepaalde variabele toe wilt voegen, zou je dat met file_get_contents() moeten doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$var
= 'Een deel tekst';
$var .= file_get_contents('bestand.php');
$var .= 'Nog een deel tekst';
?>


Let erop dat je niet de letterlijke php code uit bestand.php zult krijgen, je krijgt de html die het resultaat is van de php code in je variabele.
 
Rico

Rico

15/11/2006 18:21:00
Quote Anchor link
Frank schreef op 15.11.2006 16:47:
Waarom include je een bestand op het moment dat je output genereert? Ik heb de includes altijd bovenaan staan en heb dan ook nog nooit een probleem met een include gehad. Ik snap dan ook niet wat je bedoelt met 'hij zet de regel ... in de db tussen de tekst'. Hoe kan een include in hemelsnaam in de database terecht komen?


Hey Frank,

Duh als het om een connect gaat doe ik dat ook bovenaan, maar dit is dus een bestand dat een output genereerd die op juist die plek moet staan, anders had ik hem daar natuurlijk niet neergezet.. lol
 
Frank -

Frank -

15/11/2006 18:32:00
Quote Anchor link
Quote:
Duh als het om een connect gaat doe ik dat ook bovenaan, maar dit is dus een bestand dat een output genereerd die op juist die plek moet staan, anders had ik hem daar natuurlijk niet neergezet.. lol
En dat is precies wat je dus niet moet doen! In dit bestand genereer je een variabele waarin de output staat en je kunt includen aan het begin van je script. Wanneer jij op 1 plek in je script alle benodigde includes neerzet, wordt je script er vele malen overzichtelijker op en heb je nooit problemen met een include. Het heeft toch geen enkele zin om output naar de browser te gaan sturen en dat je er dan achterkomt dat ergens een include-file niet beschikbaar is? Dit controleer je aan het begin van je script en niet wanneer je al zo'n beetje klaar bent met de hele boel.

Persoonlijk vind ik een require_once() fraaier, maar dat is een kwestie van smaak.

Ps. Ik heb het met geen woord gehad over een connect. Include heeft daar op zich ook niets mee te maken.
 
Rico

Rico

15/11/2006 23:36:00
Quote Anchor link
Toch bedankt voor je tips frank. :)
 
Rico

Rico

15/11/2006 23:52:00
Quote Anchor link
Frank schreef op 15.11.2006 16:26:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php // NOOIT SHORTTAGS GEBRUIKEN!!! dit kun je lang niet altijd op een server aanpassen
$layout .= ' \"'.$note.'\"
        </td>
      </tr>'
; // quotes bij $note vergeten
?>


Als ik het zo doe dan krijg ik nog steeds problemen dat als een tekst dit -> " s'avonds " <- bevat er een error komt dat hij die niet in de db kan zetten :(
 
Frank -

Frank -

16/11/2006 00:09:00
Quote Anchor link
Waarom zet je html-code in je database? Dat is geen aanrader, maar goed, het kan. Maar hoe dan ook, je moet wel de functie mysql_real_escape_string() toepassen op de string die jij aanmaakt.

Maar zorg er nu eerst maar eens voor dat de string er goed uitziet, echoen en kijken of deze er goed uitziet, en ga hem dan pas in de database zetten. Nadat je mysql_real_escape_string() hebt toegepast!
 
Rico

Rico

16/11/2006 13:02:00
Quote Anchor link
De rede waarom ik het opsla in de db is dat de dynamische content steeds veranderd. De 2de rede is dat als iemand de nieuwsbrief niet kan lezen in zijn mailprogramma hij hem online kan bekijken. Dus word hij netjes uit de db gehaald zodat iedereen dezelfde nieuwsbrief te zien krijgt, ipv dat iedereen iets anders als dynamische content te zien krijgt.

Na een hoop rond gooien van de bestanden heb ik toch maar alles in 1 bestand gedaan, is niet zo makkelijk maar het werkt wel stabiel. Die mysql_real_escape_string() werkt perfect.

Heel erg bedankt allemaal voor jullie hulp en tijd.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.