flashMessage for PHP

Door , 5 jaar geleden, 7.301x bekeken

Meldingen of berichten eenmalig op het scherm tonen.
Met deze 2 functies kan het gemakkelijk.

Er wordt gebruik gemaakt van 2 functie die de melding in een sessie plaatsen en bij de eerstvolgende getFlashMessage weer ophalen.

Meer info en uitbreidingen van het script op Github

Gesponsorde koppelingen

PHP script bestanden

  1. flashmessage.php

 

Er zijn 8 reacties op 'Flashmessage for php'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen


5 jaar geleden
 
0 +1 -1 -1
Natuurlijk zijn comments welkom. Ben geen perfecte programmeur en er zal hier en daar nog wel iets bijgeschaafd kunnen worden.

De mogelijkheid is er in ieder geval om een verschillende input aan te kunnen leveren:
string
array
array met de key 'message'

In alle gevallen zou er mee omgegaan kunnen worden.
Eddy E
Eddy E
5 jaar geleden
 
0 +1 -0 -1
En wat doet het? Is er een demo? Op GitHub staat wel een code voor een demo, maar goed: dat 'voert niet uit'.


5 jaar geleden
 
0 +1 -0 -1
Wat het doet is meldingen "onthouden" en wanneer jij ze wilt weergeven, zoals bij het foutief invullen van een gebruikersnaam o.i.d, kan je de melding weergeven.
Een werkend voorbeeld heb ik niet maar er is een duidelijke uitleg naar mijn weten hoe dit wel kan.

Wellicht dat ik op een later stadium nog een werkend voorbeeld erin plaats. Ik was op het werk en heb dit even snel in elkaar gezet omdat iemand het "nodig" had.
Wouter J
Wouter J
5 jaar geleden
 
1 +1 -0 -1
Ik vind het een vrij vreemde code en ook bevat het een paar bugs. Zo is fouten onderdrukken nooit een goede oplossing. Ook zul je sowieso een NOTICE krijgen bij het eerste keer uitvoeren van dit script (dat verklaard waarschijnlijk het missen van een werkend voorbeeld).

De rede hierachter is dat de isset check op regel 11 altijd true gaat geven. Je hebt de variabele die je daar checkt namelijk op regel 7 zelf "geset". Wat je wil weten is of $_SESSION['flashmessage'] bestaat en daarna nog een keer of $_SESSION['flashmessage'][$name] bestaat.

Je kan beter isset ipv array_key_exists gebruiken, vele malen sneller.

Ook is je check for array_key_exists(1, $sessionData) vrij vreemd. Waarom check je niet op 0 of het bestaan van $sessionData['message']?

Tevens zou ik hier goed nadenken over het verschil tussen wat jij in voert in de functie en wat er vervolgens wordt opgeslagen. Deze 2 hoeven namelijk helemaal niet gelijk te zijn. De waardes die je invoert in de functie wil je het liefst zo veel mogelijk opties supporten: een array met berichten, een enkele bericht, etc.
De waarde die je opslaat wil je echter altijd uniform houden. Ik raad dus aan om altijd een array op te slaan, dat maakt je functies veel eenvoudiger.

Als laatst moeten *alle* flash messages na de request verwijderd worden. Op dit moment worden alleen de messages die je opvraagt verwijderd.


5 jaar geleden
 
1 +1 -0 -1
Over de check kan je gelijk hebben, die heb ik bij deze ook gewijzigd,.

Daarnaast check ik of array waarde 1 bestaat omdat je meerdere berichten kan opgeven dmv een array.
In het geval dat je geen meerdere berichten opgeeft en maar een string wordt er een fout opgegeven.
Natuurlijk kan ik de code ook zo maken dat als de waarde geen array is wel een array moet worden, is dit wat je bedoelt?
De code is niet perfect en ook hier probeer ik natuurlijk van te leren. Daarom post ik het ook hier.


5 jaar geleden
 
Code is gewijzigd maar door beveiligingen op phphulp kan ik het niet meer updaten.
Je kan het vinden op Github.
https://github.com/rickdgraaff/flashmessage
Thomas van den Heuvel
Thomas van den Heuvel
5 jaar geleden
 
0 +1 -0 -1
Hm, flashmessages bevatten HTML? Maar wat als de flashmessage user input bevat? Zoals je zelf aangeeft: het kan terugkoppeling geven bij het foutief invoeren van formulierinformatie. Maar daarmee kun je dus JavaScript (laten) uitvoeren. Tenzij je alle inhoud escaped, maar dan is het geen HTML meer. Als je HTML wilt gebruiken moet je dus, als je de flashmessages vult, de "gevaarlijke" delen al ontdoen van hun speciale betekenis. Ergens moet deze invoer ge-sanitized worden. Misschien wil je dat nog ergens vermelden.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen


5 jaar geleden
 
1 +1 -0 -1
@thomas, jij bedoeld denk ik dat alles moet worden omgezet naar veilige tekens? htmmlspecialchars() denk ik dan aan.

Ik zal eens het script nog onder de loep nemen want er kan beter mee omgegaan worden. En denk eraan om er een class van te maken waarmee je via methods de messages kan oproepen.

Dit is meer een quick-fix zonder al teveel beveiliging inderdaad.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

 
 

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.