omzetten date formaat naar string

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ignace Verschaeve

Ignace Verschaeve

11/05/2023 10:52:17
Quote Anchor link
Ik heb een tabel in mijn database waarin o.a. volgende kolommen voorkomen:
datum type date (slaat de datum op waarop de gebruiker registreert)
einddatum type date ( slaat de datum + 7 dagen op). Dit wil ik gebruiken om een eindtijd in te stellen waarbinnen de gebruiker toegang heeft tot bepaalde gegevens.
Naam type VarChar
Maar ik wil volgende code gebruiken om op bepaalde pagina's weer te geven Welkom 'Naam persoon' u heeft toegang tot ' einddatum)
Ik gebruik volgende code om de strings te genereren en voor Naam werkt dat maar niet voor de datum.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if ($_SESSION['pasw'] == $row["paswoord"]){
        $_SESSION['ingelogd']="J";
        $_SESSION['Naam']= $row["Naam"];
        $_SESSION['VNaam']= $row["Vnaam"];
        $_SESSION['edat']= $row["einddatum"];
        $_SESSION['etijd']= $row["eindtijd"];

Ik geraak er niet uit hoe ik dus die einddatum kan omzetten naar een string. Iemand een idee? Ik zie door het bos de bomen niet meer.
Database is MariaDB
 
PHP hulp

PHP hulp

16/06/2024 13:41:12
 
- Ariën  -
Beheerder

- Ariën -

11/05/2023 11:00:37
Quote Anchor link
Heb je al gekeken naar DATE_FORMAT() in MariaDB/MySQL?

Verder heb ik nog een opmerking:
Wat doet een password in een sessie??!?
En waarom geen true als boolean bij de ingelogd-check?
Gewijzigd op 11/05/2023 11:12:39 door - Ariën -
 
Ward van der Put
Moderator

Ward van der Put

11/05/2023 11:54:08
Quote Anchor link
Ignace Verschaeve op 11/05/2023 10:52:17:
Ik geraak er niet uit hoe ik dus die einddatum kan omzetten naar een string.

Als die einddatum geen string is, wat is het dan wel?
 
Ignace Verschaeve

Ignace Verschaeve

11/05/2023 12:23:20
Quote Anchor link
@Arien zoals er in de IF staat. Geen schrik paswoord wordt ge-encrypteerd verzonden en ge-encrypteerd opgeslagen.

En op de vraag als het geen string is wat is het dan wel? Blijkbaar is een type Varchar wel een string en een type date niet.
 
- Ariën  -
Beheerder

- Ariën -

11/05/2023 12:33:20
Quote Anchor link
Ignace Verschaeve op 11/05/2023 12:23:20:
@Arien zoals er in de IF staat. Geen schrik paswoord wordt ge-encrypteerd verzonden en ge-encrypteerd opgeslagen.

Als het geëncrypteerd is dan heb je alsnog een serieus veiligheidslek als de sleutel uitlekt.
En verder heeft dit niks in een sessie te doen. Het wachtwoord gebruik je enkel om binnen te komen om je te authenticeren. Daarna niet meer.

Quote:
En op de vraag als het geen string is wat is het dan wel? Blijkbaar is een type Varchar wel een string en een type date niet.

je slaat het nu als DATE op in de database. Wat moet je uitvoer dan zijn?
 
Ozzie PHP

Ozzie PHP

11/05/2023 13:33:48
Quote Anchor link
Ignace Verschaeve op 11/05/2023 12:23:20:
@Arien zoals er in de IF staat. Geen schrik paswoord wordt ge-encrypteerd verzonden en ge-encrypteerd opgeslagen.

Geen schrik? Wel schrik! Je hoort helemaal geen wachtwoord op te slaan in een sessie. Je behoort een hash van een wachtwoord op te slaan in de database en je slaat dergelijke informatie NOOIT op in een sessie!! (Ook niet in een cookie of local storage.)
 
- Ariën  -
Beheerder

- Ariën -

11/05/2023 13:43:53
Quote Anchor link
Als ik klant zou zijn zou ik mij serieus rotschrikken, en haast geneigd zijn om mijn account op te zeggen.
 
Ivo P

Ivo P

12/05/2023 10:41:02
Quote Anchor link
Ik zou doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$date
= new DateTime($_SESSION['edat']);

echo $date->format('d M y'); // of welk formaat jij leuk vindt.

?>


Ik zou niet in de query gaan klooien met DATE_FORMAT().
Redenen:
* ander formaat nodig in je tekst? Dan query aan passen.
* op de ene plek wil je d-m-Y hebben en in een mailtje wil je d M y zien? dan wil je toch niet 2 x date_format() in je query?
* sorteren: vaak sorteert iemand dan weer op die geformateerde datum en dat gaat goed binnen 1 maand, maar dan ineens blijkt 1 december vóór 31 oktober te sorteren...

Ik haal altijd de datum / datumtijd op in het formaat Y-m-d H:i, zoals mysql dit teruggeeft.
En in PHP zet ik het in een zeker formaat.

Edit:
Berichten ontdubbeld
Gewijzigd op 12/05/2023 11:18:11 door - Ariën -
 
Ignace Verschaeve

Ignace Verschaeve

15/05/2023 10:22:39
Quote Anchor link
- Ariën - op 11/05/2023 13:43:53:
Als ik klant zou zijn zou ik mij serieus rotschrikken, en haast geneigd zijn om mijn account op te zeggen.


In die sessie komt alleen het gehasht paswoord te pas. Niet het "echte" paswoord. Zo gek ben ik ook niet.

Toevoeging op 15/05/2023 10:24:26:

Ivo P op 12/05/2023 10:41:02:
Ik zou doen:
[...]


Ik probeer het uit.
Gewijzigd op 15/05/2023 15:59:58 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

15/05/2023 10:45:40
Quote Anchor link
Om er op terug te komen. Eerst wordt het geëncrypteerd, en nu opeens gehashed?

Met welke reden gebruik je daar het wachtwoord voor? Het is niet de bedoeling.
Gebruik anders een aparte unieke hash.
Gewijzigd op 15/05/2023 10:47:01 door - Ariën -
 
Ivo P

Ivo P

15/05/2023 13:45:49
Quote Anchor link
over je password in een session.

Als jij de bioscoop in gaat, dan laat je bij de ingang van de zaal je kaartje zien.
Is dat ok, dan mag je erin.
Het is niet nodig om de gehele film op je stoel te zitten met je kaartje omhoog.

Zo ook met een session.
Om in te loggen is het nodig om een password aan te leveren.
Dit wordt gecontroleerd (via hash vergelijking of hoe dan ook).

Is het ok, dan maak je een session-variabele aan.
Bijvoorbeeld $_SESSION['ingelogd'] = true;
Eventueel nog aangevuld met $_SESSION['userid'] = 1234; maar het is niet nodig om de gehele tijd een al dan niet gehasht password bij je te dragen.

Op zich is het moeilijk om de session-variabele uit te lezen buiten het script, maar als iemand toegang krijgt tot de session-bestanden, en die staan op de server, dan zijn al je gehashte passwords gelekt.

op een slecht geconfigureerde server staan de session bestanden soms gewoon in /tmp en deze zijn dan door elke php-site op de server uit te lezen. Zeker op shared hosting wil je dat niet.

Maar vooral:
het is niet nodig.
En wat niet nodig is en bovendien een veiligheidsissue kan opleveren, moet je niet doen.
 
Ignace Verschaeve

Ignace Verschaeve

15/05/2023 16:02:16
Quote Anchor link
Ivo P op 12/05/2023 10:41:02:
Ik zou doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$date
= new DateTime($_SESSION['edat']);

echo $date->format('d M y'); // of welk formaat jij leuk vindt.

?>




Ik heb nu dit gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$_SESSION['edat']= new DateTime($row["einddatum")];

en op de volgende pagina heb ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
echo "<b>"."Welkom: ".$_SESSION['Naam'];
    echo " ".$_SESSION['Vnaam']."</b>"."<br/>";
    echo " ".$_SESSION['edat']-> format('d,M,y')."</b>"."<br/>";

Maar voor dat laatste lijntje krijg ik deze foutmelding:
Quote:
Welkom: Tester twee
Fatal error: Uncaught Error: Call to a member function format() on string in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/koepel/reg/zoek_reg.php:32 Stack trace: #0 {main} thrown in /customers/1/5/0/fv-vl-ardennen.be/httpd.www/koepel/reg/zoek_reg.php on line 32


Waar ga ik in de fout? En er zit wel degelijk een datum in het bestand in het formaat jjjj-mm-dd
 
- Ariën  -
Beheerder

- Ariën -

15/05/2023 16:07:26
Quote Anchor link
Eerst de DateTime initialiseren in een eigen variabele, en dan die gebruiken met de format-functie.
Wat je nu hebt klopt niet. Dit moet wel werken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$edat
= new DateTime($row["einddatum"]);
$_SESSION['edat'] = $edat->format('d,M,y');
?>
Gewijzigd op 15/05/2023 16:07:39 door - Ariën -
 
Ignace Verschaeve

Ignace Verschaeve

15/05/2023 18:22:02
Quote Anchor link
- Ariën - op 15/05/2023 16:07:26:
Eerst de DateTime initialiseren in een eigen variabele, en dan die gebruiken met de format-functie.
Wat je nu hebt klopt niet. Dit moet wel werken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$edat
= new DateTime($row["einddatum"]);
$_SESSION['edat'] = $edat->format('d,M,y');
?>




Ik ben aan het zoeken hoe ik hier een afbeelding kan invoegen. Ik vind het niet direct. Want het werkt niet de code zoals hierboven. Ik zie enkel verschijnen einddatum in plaats van de werkelijke datum
Gewijzigd op 15/05/2023 18:34:33 door Ignace Verschaeve
 
- Ariën  -
Beheerder

- Ariën -

15/05/2023 18:57:37
Quote Anchor link
We hebben geen imageupload op het forum. Je kan op www.imgbb.com een afbeelding uploaden en die hier invoegen.
Graag alleen afbeeldingen ter ondersteuning van je bericht, en niet voor code's.

Verder is het logisch dat je de einddatum krijgt: $row["einddatum"]
Gewijzigd op 15/05/2023 18:58:25 door - Ariën -
 



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.