Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP]/[JS] Bij knop automatisch notificatiemail verzenden

Ger
11 antwoorden
  • We maken gebruik van een op PHP gebaseerd systeem waar gebruikers die opmerkingen hebben over een bepaalde pagina dit kunnen doen met een simpel venstertje waar ze hun opmerking kunnen plaatsen. Deze opmerking wordt opgeslagen en komt naarvoren in een overzicht. Er worden echter maar sporadisch opmerkingen geplaatst (gemiddeld misschien 1x per maand) dus om nu iedere dag (je wilt toch binnen een dag kunnen reageren) bij de verschilende publicaties te kijken of er misschien een opmerking is geplaatst kost onnodig veel tijd. Veel liever zou ik willen dat op het moment dat de opmerking geplaatst wordt (a.k.a. men klikt op "Verzenden";) er automatisch een mailtje gestuurd wordt naar het gemeenschappelijke emailadres met daarin een linkje naar de opmerking in kwestie.

    Nu heb ik eens gekeken in het PHP bestand dat verantwoordelijk is voor het aanmaken van notities. Daarin kom ik dit stuk tegen:

    [code:1:91590bc3b6]$V4e9c6ff7->ReplaceFirstEncoded ('label_submit', Fed760e01::GetString ('Submit', 'Verzenden', $V8222d841));
    $V4e9c6ff7->ReplaceFirstEncoded ('addnote_title', Fed760e01::GetString ('Title_AddNote', 'Mavim notitie', $V8222d841));
    $V4e9c6ff7->ReplaceFirstEncoded ('referrer', $V7192fc35); $V4e9c6ff7->ReplaceFirst ('css_default_header', Fa470a233::GetDefaultCssHeader ($V72ec6049));
    $V4e9c6ff7->ReplaceFirst ('css_header', Fa470a233::GetCssHeader ($V72ec6049, 'AddNoteWindow.css'));
    $V4e9c6ff7->OutputHtml (TRUE); } } } } } } function FillDynamicPart ($V1547d684, $V200d70e8, $Vc4b5ae8e, $Vf074426a, $Vbe8e4c07, $Vbdbd65f3, $V9e21b956)
    { $Vb3e75949 = count ($Vc4b5ae8e); $Vd9b31a8b = 0; $V461bd48e = 0; $V8fa0be15 = NULL; $Vf5bcec9d = "";
    $Vc4951f62 = F5a17c2cf($Vbe8e4c07, $Vf074426a, $V9e21b956); $V1680fd81 = $V1547d684->CreateClone ();
    $Vb2f21252 = $V1547d684->GetSubTemplate ('mv_loop'); if ($Vb2f21252 !== NULL) { $Vb575cbbe = "";
    while ($Vd9b31a8b < $Vb3e75949) { $Vde22c560 = $Vc4b5ae8e [$Vd9b31a8b]; $Vd9b31a8b++; if ($Vde22c560->GetProcessed () === ($Vbe8e4c07 === 1))
    { $V2e931599 = NULL; if (Fde18ec36::FilePathToWebUrl ($V200d70e8, $V2e931599)) { $Vcba14aa5 = $Vde22c560->GetElementId ();
    $Vfd625ae9 = $V2e931599->CreateClone (); $Vfd625ae9->AppendEncodedPath ("/$Vcba14aa5.htm"); $V13c23d65 = $Vfd625ae9->GetValue ();
    $Vd3f2d92b = Fa76d4ef5::FromMavimTimeString ($Vde22c560->GetDate ()); $V92f44e45 = $Vde22c560->GetNote ()->GetElementSourceId ()->GetId ();
    $Ve7f89ad5 = $Vde22c560->GetNoteIndex (); if ($Vf074426a) { $V970bcf46 = $Vde22c560->GetNote ()->GetContent ();
    } else { $V970bcf46 = Ff91e6016::ClipContent ($Vde22c560->GetNote ()->GetContent (), 40); } $Vf895b049 = $Vb2f21252->CreateClone ();
    [/code:1:91590bc3b6]
    Ik zal onmiddelijk toegeven dat ik geen PHP-wonder ben, maar meestal kan ik toch wel goed volgen wat er nu uitgespookt wordt. In dit geval kan ik er echter niet echt wijs uit.

    Ergens zou ik iets moeten toevoegen als
    [code:1:91590bc3b6]mailto:*adres*?subject=Opmerking Mavim&body=Er is een opmerking geplaatst in Mavim. Klik op onderstaande link om de opmerking te bekijken: "javascript:window.open ('./AddNote.php?element_id=$V92f44e45&site_id=$V47ad4055')");[/code:1:91590bc3b6]
    Waarbij ik nog niet eens zeker weet of mijn bovenstaande code klopt, maar daar kom ik dan wel weer uit (hoop ik).
    Vraag is echter allereerst: Waar moet ik die code in plakken?
  • Het is niet gek dat je niet uit de code komt. Het lijkt me dat dit door een obfuscator is gehaald (of handmatig 'onleesbaar' is gemaakt). Ik kan me namelijk niet voorstellen dat iemand voor de fun zulke variabelen gebruikt ;)

    Je kan het best ergens in de code (helemaal bovenin of helemaal onderin lijken mij de beste opties) een mail() plaatsen. Dat is een standaard PHP functie voor het versturen van mail. Zie ook de manual.

    Enig nadeel van het feit dat je niet weet hoe de flow door het script is, is dat je niet met zekerheid kunt zeggen dat de aanroep van het script ook heeft gezorgd voor een opmerking (er kan immers ook een controle in het script zitten die aangeeft dat de opmerking niet geldig is). Het enige wat het mailtje zal aangeven, is dat het script is aangeroepen. Maar ik neem aan dat dat voldoende is.

    Zo niet dan zal je moeten proberen te achterhalen hoe het script werkt via debugwerk. Maar dat zal wel wat tijd kosten.
  • Ok, voor de duidelijkheid, ik moet dus toevoegen:

    [code:1:78611fcbeb]
    {
    $to = 'mail@example.com';
    $subject = 'Opmerking gemaakt';
    $message = 'Er is een opmerking geplaatst of iemand heeft de opmerkingen bekeken. <a href="$V3a4ea89d /#" class="OverviewComments" id="OverviewComments">Bekijk de notities</a>';
    mail($to, $subject, $message,);
    }
    [/code:1:78611fcbeb]
    Is dit voldoende?

    En dit kan ik dus toevoegen vlak voor ?> als ik het goed begrijp?
  • Dat lijkt mij inderdaad voldoende.
  • Hij lijkt het niet te doen, ik krijg bij het oproepen van addnote.php de melding:
    [code:1:318efcc7a7]Parse error: syntax error, unexpected T_STRING in c:\Inetpub\wwwroot\SIS5Php\AddNote.php on line 81
    [/code:1:318efcc7a7]
    Dit is wat ik nu heb staan:

    [code:1:318efcc7a7]{
    $to      = 'mail@example.com';
    $subject = 'Opmerking gemaakt';
    $message = 'Er is een opmerking geplaatst of iemand heeft de opmerkingen bekeken. <a href="$V3a4ea89d /#" class="OverviewComments" id="OverviewComments">Bekijk de notities</a>';
    mail($to, $subject, $message);
    }
    ?>[/code:1:318efcc7a7]
  • Haal die accolades aan het begin en het einde van je code even weg.
  • Heb ik gedaan, maar dat had geen effect. Wat wel effect had was wat spaties wegwerken (ik werk hier -tegen mijn zin- zonder fatsoenlijke scripteditor). Ik krijg nu geen foutmelding meer, kan gewoon opmerkingen plaatsen, die worden gewoon opgeslagen, maar ik krijg geen mail. Het laatste stuk van de code ziet er nu zo uit:

    [code:1:f0a7b9b453] }

    $to = 'mail@example.com';
    $subject = 'Opmerking gemaakt';
    $message = 'Er is een opmerking geplaatst of iemand heeft de opmerkingen bekeken. <a href="(enorm lange url)">Klik hier om naar de opmerkingen te gaan</a>';
    mail($to, $subject, $message);

    ?>
    [/code:1:f0a7b9b453]

    Het mailadres is dan wel de juiste, maar die ga ik hier niet plaatsen ivm spam.

    Het lijkt erop dat het bovenstaande totaal niet wordt uitgevoerd? :?
  • Misschien wordt je mail door een spamfilter verwijderd, aangezien je mail niet compleet is. Zo mis ik onder anderen een From: voor de afzender. Als deze mist zal PHP het invullen met het serveradres, wat kan leiden tot ongewenste resultaten. In mijn ervaring is het ook altijd goed om veel tekst en weinig links in een mail te zetten om op die manier spamfilters te omzeilen.

    - Bas
  • Ik kan natuurlijk wat headers toevoegen. Echter zou ik het vreemd vinden dat interne mail wordt geblokkeerd.
    Zou ik gewoon het doeladres als From: adres kunnen instellen?

    En dat is het enige waar het in zou kunnen zitten begrijp ik, want het wordt dus wel uitgevoerd?
  • Om er achter te komen of code wordt uitgevoerd, wil het wel eens helpen om wat debug-code toe te voegen. Bijvoorbeeld na je mail() statement:

    [code:1:70f9f4873c]
    mail($to, $subject, $message);
    echo $to, '<br>', $subject, '<br>', $message;
    [/code:1:70f9f4873c]
  • Ik had al een simpel testje gemaakt om te zien of de mail verstuurd kon worden of niet. Ben er inmiddels achter dat het te maken heeft met de smtp server waarmee geen contact gelegd wordt. Ik probeer nu met een php.ini bestand eea te bereiken, maar door de vage structuur van virtuele servers hier blijkt dat niet zo eenvoudig.

    Toch bedankt voor zover, ik verwacht dat ik er verder wel uit kom.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.