[php] Hoe kan ik code versturen via mail?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben een formulier aan het bouwen dat spelsuggesties moet opleveren voor plaatsing in mijn spelletjesgenerator.

Nu wil ik daar weinig werk mee hebben en bovendien moet het duidelijk zijn voor meerdere mensen, zodat ik probeer de email die ik ontvang te laten bestaan uit een aantal onderdelen die de code bevat die in mijn generator moet worden toegevoegd.

Ik heb hier de code die dat moet bewerkstelligen, maar ik kan niet voorkomen dat de code wordt uitgevoerd door de emailclient. Heeft iemand een suggestie?

Het gaat niet om schoonheidsfoutjes, want ik krijg geen foutmeldingen.

PHP:
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
// Mailen: 
            $bericht = " 
<html> 
<head> 
  <title>Spelsuggestie</title> 
</head> 
<body>
<p align='justify'>Er is door ".$_POST['naam']." een spelsuggestie ingestuurd.</p>
<p align='justify'>Het spel valt onder de categorie: ".$_POST['speltype'].".</p> 
<p align='justify'>Het spel heet: ".$_POST['titelspel'].".</p>
<p align='justify'>Het volgende dient te worden opgeslagen als ".$_POST['titelspel'].".txt in de map ftp://Spelregels.: Nb: Stuur lege benodigdheden niet mee! </p>
<p align='justify'>Spelregels:<br />
".$_POST['uitlegdeelnemer']."<br /><br />
Noot voor de scheidsrechter:<br />
".$_POST['uitlegscheidsrechter']."<br /><br />
Benodigdheden:<br />
- ".$_POST['benodigd1']."<br />
- ".$_POST['benodigd2']."<br />
- ".$_POST['benodigd3']."<br />
- ".$_POST['benodigd4']."<br />
- ".$_POST['benodigd5']."<br />
- ".$_POST['benodigd6']."<br />
- ".$_POST['benodigd7']."<br />
- ".$_POST['benodigd8']."<br />
- ".$_POST['benodigd9']."<br />
- ".$_POST['benodigd10']."<br />
</p>
<p align='justify'>Het volgende dient te worden bijgevoegd voor NOOT1 in ftp://sterksteverkiezing.php.</p>
<p align='justify'>Op dit stukje code krijg ik steeds een foutmelding, dus da's van later zorg.</p>
<p align='justify'>Het spel valt onder de categorie: ".$_POST['speltype'].".</p> 
<p align='justify'>Het volgende dient te worden bijgevoegd voor NOOT2 in ftp://Competitiegenerator.html.</p>

// -- De volgende code mag niet worden uitgevoerd.
<div id='".$_POST['titelspel']."' class='balloonstyle' style='width: 300px; background-color: lightyellow'>
".$_POST['titelspel'].":<br />
".$_POST['kortebeschrijving']."<br /><br />
Benodigdheden: <br />
- ".$_POST['benodigd1']."<br />
- ".$_POST['benodigd2']."<br />
- ".$_POST['benodigd3']."<br />
- ".$_POST['benodigd4']."<br />
- ".$_POST['benodigd5']."<br />
- ".$_POST['benodigd6']."<br />
- ".$_POST['benodigd7']."<br />
- ".$_POST['benodigd8']."<br />
- ".$_POST['benodigd9']."<br />
- ".$_POST['benodigd10']."<br /></div>
//-->>

<p align='justify'>Het volgende dient te worden bijgevoegd voor NOOT3 in ftp://Competitiegenerator.html.</p>
    
    // -- De volgende code mag niet worden uitgevoerd.
<tr><td width='200'><INPUT TYPE='checkbox' NAME='".$_POST['titelspel']."' VALUE='true'><strong>".$_POST['titelspel'].".</strong></td>
<td width='100' align='left'><a href='#nogo' rel='".$_POST['titelspel']."' style='color: black'>[?]</a></td></tr>
//-->>

<p align='justify'><strong>EN TESTEN!!!!!</strong></p>
</body> 
</html> 
";

Acties:
  • 0 Henk 'm!

  • Mad Marty
  • Registratie: Juni 2003
  • Laatst online: 13:49

Mad Marty

Je bent slimmer als je denkt!

Als het stukje script niet mag worden uitgevoerd, waarom zet je het er dan in?

8)7 Laat maar, ik zie het al, zal voortaan wat beter lezen.

Met hieronder :)

[ Voor 36% gewijzigd door Mad Marty op 11-02-2009 08:55 ]

Rail Away!


Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Je zou htmlspecialchars daarvoor kunnen gebruiken.

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 18-09 21:53

Tux

html die niet uitgevoerd mag worden in een string stoppen, door htmlspecialchars() heen trekken en daarna echo'en zou het moeten doen.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mad Marty schreef op woensdag 11 februari 2009 @ 08:50:
Als het stukje script niet mag worden uitgevoerd, waarom zet je het er dan in?
Dit stukje moet worden toegevoegd aan een bestand op mijn server. Om gesleutel te voorkomen wil ik graag copy-pasten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heeft een van jullie ook een voorbeeldje? Ik ben nog niet zo ver gevorderd. Het zou mee een hoop tijd schelen.

Acties:
  • 0 Henk 'm!

  • trinite_t
  • Registratie: Maart 2003
  • Laatst online: 17-09 14:06
Waarom voeg je het niet toe aan een ander bestand (buiten je webroot), die je dan later "handmatig" merged met je werkelijke bestand. Lijkt me prettiger dan copy-pasten.

(of elk element in aparte files zetten, is wat makkelijker controleren), of nog beter, het wordt vast opgebouwd adhv een template, de waardes opslaan in een database, en deze pas laten toevoegen als je zelf een flag omgezet hebt (zou bijvoorbeeld kunnen door op een link in je mailtje te klikken). O-)

[ Voor 47% gewijzigd door trinite_t op 11-02-2009 09:29 ]

The easiest way to solve a problem is just to solve it.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Omdat de genoemde bestanden alleen via een editor te benaderen vallen voor anderen. Het bijbehorende email-adres is door iedereen te openen. Meerdere mensen gaan alléén deze twee bestandjes bijhouden. Dan hoeft er verder geen toegang tot de server te worden verschaft.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op woensdag 11 februari 2009 @ 09:23:
Heeft een van jullie ook een voorbeeldje? Ik ben nog niet zo ver gevorderd. Het zou mee een hoop tijd schelen.
Zo werkt het hier niet. Het is hier geen afhaalbalie ;)

Je hebt de tip om htmlspecialchars te gebruiken net gekregen. Dit zort ervoor dat je code ook echt als code in de mail zichtbaar wordt. Hoe je dit kan gebruiken staat prima uitgelegd in de PHP manual. Dus wat lukt daar niet mee?

[ Voor 4% gewijzigd door Creepy op 11-02-2009 09:33 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • trinite_t
  • Registratie: Maart 2003
  • Laatst online: 17-09 14:06
Verwijderd schreef op woensdag 11 februari 2009 @ 09:32:
Omdat de genoemde bestanden alleen via een editor te benaderen vallen voor anderen. Het bijbehorende email-adres is door iedereen te openen. Meerdere mensen gaan alléén deze twee bestandjes bijhouden. Dan hoeft er verder geen toegang tot de server te worden verschaft.
Klikt in mijn oren als iets dat je met een database zou doen... Die twee personen een login geven op de database naar de tabel waar het instaat. Of een simpel (met login) php ding schrijven waarin ze deze code blokken kunnen enablen/disablen. Naar mijn mening is het editten van bestanden vaak erg gevoelig voor fouten. Iemand vergeet ergens een sluittag en je hebt weer de grootste barrel op je website staan.
Ik zeg niet dat dit de oplossing is voor jou probleem. Daarvoor heb je te weinig informatie gegeven, maar misschien is het wel het overwegen waard.

The easiest way to solve a problem is just to solve it.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Creepy schreef op woensdag 11 februari 2009 @ 09:33:
[...]

Zo werkt het hier niet. Het is hier geen afhaalbalie ;)

Je hebt de tip om htmlspecialchars te gebruiken net gekregen. Dit zort ervoor dat je code ook echt als code in de mail zichtbaar wordt. Hoe je dit kan gebruiken staat prima uitgelegd in de PHP manual. Dus wat lukt daar niet mee?
Sorry. Ik dacht dat het om zeer ingewikkelde code ging. Kwartje is gevallen!! Ik denk dat ik me hier wel mee ga redden.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
'Het werkt. Dank u heren!!!

Dit is hem geworden
PHP:
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
            $trans = get_html_translation_table(HTML_ENTITIES);
$str1 = "
            if(isset($_POST['".$_POST['titelspel']."']))
                {
                $pdf->UitlegKaart($i,'".$_POST['titelspel']."','Spelregels/".$_POST['titelspel'].".txt',$i);
                $tabelrijscore[] = '".$_POST['titelspel']."';
                $i++;
            }";
$noot1 = strtr($str1, $trans);
$str2 = "<div id='".$_POST['titelspel']."' class='balloonstyle' style='width: 300px; background-color: lightyellow'>
".$_POST['titelspel'].":<br />
".$_POST['kortebeschrijving']."<br /><br />
Benodigdheden: <br />
- ".$_POST['benodigd1']."<br />
- ".$_POST['benodigd2']."<br />
- ".$_POST['benodigd3']."<br />
- ".$_POST['benodigd4']."<br />
- ".$_POST['benodigd5']."<br />
- ".$_POST['benodigd6']."<br />
- ".$_POST['benodigd7']."<br />
- ".$_POST['benodigd8']."<br />
- ".$_POST['benodigd9']."<br />
- ".$_POST['benodigd10']."<br /></div>";
$noot2 = strtr($str2, $trans);
$str3 = "<tr><td width='200'><INPUT TYPE='checkbox' NAME='".$_POST['titelspel']."' VALUE='true'><strong>".$_POST['titelspel'].".</strong></td>
<td width='100' align='left'><a href='#nogo' rel='".$_POST['titelspel']."' style='color: black'>[?]</a></td></tr>";
$noot3 = strtr($str3, $trans);
// Mailen: 
            $bericht = " 
<html> 
<head> 
  <title>Spelsuggestie</title> 
</head> 
<body>
<p align='justify'>Er is door ".$_POST['naam']." een spelsuggestie ingestuurd.</p>
<p align='justify'>Het spel valt onder de categorie: ".$_POST['speltype'].".</p> 
<p align='justify'>Het spel heet: ".$_POST['titelspel'].".</p>
<p align='justify'>Het volgende dient te worden opgeslagen als ".$_POST['titelspel'].".txt in de map ftp://Spelregels.: Nb: Stuur lege benodigdheden niet mee! </p>
<p align='justify'>Spelregels:<br />
".$_POST['uitlegdeelnemer']."<br /><br />
Noot voor de scheidsrechter:<br />
".$_POST['uitlegscheidsrechter']."<br /><br />
Benodigdheden:<br />
- ".$_POST['benodigd1']."<br />
- ".$_POST['benodigd2']."<br />
- ".$_POST['benodigd3']."<br />
- ".$_POST['benodigd4']."<br />
- ".$_POST['benodigd5']."<br />
- ".$_POST['benodigd6']."<br />
- ".$_POST['benodigd7']."<br />
- ".$_POST['benodigd8']."<br />
- ".$_POST['benodigd9']."<br />
- ".$_POST['benodigd10']."<br />
</p>
<p align='justify'>Het volgende dient te worden bijgevoegd voor NOOT1 in ftp://sterksteverkiezing.php.</p>
".$noot1."
<p align='justify'>Het spel valt onder de categorie: ".$_POST['speltype'].".</p> 
<p align='justify'>Het volgende dient te worden bijgevoegd voor NOOT2 in ftp://Competitiegenerator.html.</p>
".$noot2."
<p align='justify'>Het volgende dient te worden bijgevoegd voor NOOT3 in ftp://Competitiegenerator.html.</p>
".$noot3."
<p align='justify'><strong>EN TESTEN!!!!!</strong></p>
</body> 
</html> 
";

Nu nog de regels afbreken.....

[ Voor 98% gewijzigd door Verwijderd op 11-02-2009 10:17 ]


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Was de <code> tag hier niet voor?

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb ik geprobeerd. Werkt niet.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dan zul je nog steeds je HTML moeten escapen... of je nou <code><p>bla</p></code> schrijft of <body><p>bla</p></body>...what's the difference? Als je de HTML niet escaped zul je in beide gevallen de p-tags niet zien.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oh ja ik dacht dat het wat anders deed :P Maar dit kan wel:
HTML:
1
2
3
4
    <textarea style="background:transparent; border:0px;">
      <p>
        <div>Hoi</div></p>
    </textarea>

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Guillome schreef op woensdag 11 februari 2009 @ 11:28:
Oh ja ik dacht dat het wat anders deed :P Maar dit kan wel:
HTML:
1
2
3
4
    <textarea style="background:transparent; border:0px;">
      <p>
        <div>Hoi</div></p>
    </textarea>
Briljant: Dat is precies wat ik zoek. Dat lost meteen het probleem met het vertalen van de tabs en linefeeds op!! Bovendien kan ik in het mailtje de fouten er al uit halen, alvorens het te selecteren. _/-\o_ _/-\o_

[ Voor 10% gewijzigd door Verwijderd op 11-02-2009 11:47 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Guillome schreef op woensdag 11 februari 2009 @ 11:28:
Oh ja ik dacht dat het wat anders deed :P Maar dit kan wel:
HTML:
1
2
3
4
    <textarea style="background:transparent; border:0px;">
      <p>
        <div>Hoi</div></p>
    </textarea>
Binnen een textarea dien je nog steeds je HTML te escapen; en dit is moeilijk doen als 't makkelijk kan: daar is de <pre> tag voor uitgevonden ;)

HTML:
1
2
3
4
<pre>
      &lt;p&gt;
        &lt;div&gt;Hoi&lt;/div&gt;&lt;/p&gt;
</pre>


@Loninkwoner: waarom is het gebruik van HTMLSpecialChars dan zo moeilijk?

PHP:
1
2
3
<pre>
<?php echo htmlspecialchars($code) ?>
</pre>

[ Voor 11% gewijzigd door RobIII op 11-02-2009 12:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Wat misschien een betere oplossing is dan die van Guillome:

PHP:
1
2
3
4
5
6
7
8
9
10
<pre>
<?php
$html = '<h1>Blaat</h1>
<p>
    dit is een testje xD
    bla bla bla bla blaat
</p>';
echo htmlspecialchars($html);
?>
</pre>


resultaat:
code:
1
2
3
4
5
<h1>Blaat</h1>
<p>
    dit is een testje xD
    bla bla bla bla blaat
</p>

Dus goed met tabs en linebreaks. :)

edit:
Sneller zijn, Guido.. :/

[ Voor 6% gewijzigd door Verwijderd op 11-02-2009 12:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op woensdag 11 februari 2009 @ 12:06:
@Loninkwoner: waarom is het gebruik van HTMLSpecialChars dan zo moeilijk?

PHP:
1
2
3
<pre>
<?php echo htmlspecialchars($code) ?>
</pre>
Je geeft net zelf het antwoord. Ik zit nog met die tabs en linebreaks in de maag. De <pre>-tags vormen een oplossing.

Toch denk ik dat ik kies voor de oplossing met de textarea; de mogelijkheid om spelfouten direct te verwijderen staat me wel aan. De werkelijke toedracht voor mijn vraag is een lang verhaal.

We beheren met meerderen een site. ( zie handtekening) Daar wil ik een spelletjesgenerator (die een soort competie genereert met speluitleg, spelnummers en scorekaartjes op PDF-formaat. Deze PDF kan worden geprint) op hebben met de mogelijkheid spelsuggesties in te sturen. Het is voor mij te moeilijk om de spelsuggesties automatisch in de generator te mikken. Bovendien is de kans op slechte suggesties op mijn generator dan te groot. De suggesties komen binnen op een gezamelijke email-box. De beheerders kunnen dan allemaal de suggestie (na foutcontrole en aanvullingen) in de generator zetten. Handmatig dan. Het mailtje en enkele opmerkingen in de generator moeten een handleiding gaan vormen.

Uiteindelijk moet het mogelijk worden voor bezoekers om zelf spelletjes aan de te genereren PDF toe te voegen. Ik wil zelf graag een mailtje van het toegevoegde ontvangen om te beoordelen of het standaard aan de generator kan worden toegevoegd.

[ Voor 13% gewijzigd door Verwijderd op 11-02-2009 12:39 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik kan er geen touw aan vast knopen maar whatever floats your boat...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Wat hebben tabs en lniebreaks er nou mee te maken dan? Ik volg het al wat langer niet meer, maar voor enkel dat stukje script (ik zie trouwens alleen maar HTML) kan je htmlentities toch gewoon gebruiken?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
MueR schreef op woensdag 11 februari 2009 @ 14:28:
Wat hebben tabs en lniebreaks er nou mee te maken dan? Ik volg het al wat langer niet meer, maar voor enkel dat stukje script (ik zie trouwens alleen maar HTML) kan je htmlentities toch gewoon gebruiken?
Ik moet toch nog eens uitzoeken wat nou 't verschil is tussen htmlspecialchars en htmlentities... kan ik nooit onthouden als non-php-er :P
This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.
Ah. Pfew. Dan is mijn opmerking dus wel zinnig geweest O-)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

offtopic:
Dat onthou ik ook nooit. Ik gebruik altijd htmlentities en als dat niet doet wat ik verwacht ga ik kijken welke ik ook al weer wel moest hebben :P

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
MueR schreef op woensdag 11 februari 2009 @ 14:55:
offtopic:
Dat onthou ik ook nooit. Ik gebruik altijd htmlentities en als dat niet doet wat ik verwacht ga ik kijken welke ik ook al weer wel moest hebben :P
offtopic:
An sich zijn, voor deze ene keer :P , de functienamen nog wel redelijk dekkend... nu ik het opgezocht heb kan ik 't waarschijnlijk wel (een weekje :P ) onthouden ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1