Password Verify Probleem

  • Hallo,


    Ik ben bezig met een Open Source Social Media System. Maar bij het testen heb ik een error gevonden die ik niet gefixt krijg.


    Code
    Fatal error: Call to undefined function password_verify() in /home/(website)/domains/(website)/public_html/includes/empire.class.php on line 34


    de line hiervan is


    Code
    if(password_verify($password, $temp_user_row['password']))



    Ik zelf ben een beginner in dit soort zaken mijn excuse's als het "amateurig" gedaan is.
    Met Vriendelijke Groeten,
    BlueGriffon

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Waarschijnlijk is je PHP-versie niet nieuw genoeg. password_verify is een functie die pas beschikbaar is vanaf PHP 5.5.0.


    Je kunt je PHP-versie controleren door (tijdelijk) een apart script te maken (bijvoorbeeld info.php) met hierin de code:


    PHP
    <?php
    phpinfo();
    ?>



    De php versie is 5.4.34


    Maar is er ook een mogelijkheid om deze naar 5.5 te brengen of het script naar 5.4?

  • Dat weet ik niet? Ontwikkel je op een eigen machine? Daarnaast zul je ook met de PHP-versie van je hosting rekening moeten houden als je dit ooit online gaat zetten.


    Zoals ik het zie (heb er verder nog niet mee gewerkt) zijn password_hash() en password_verify() gemaksfuncties. Wat je zou kunnen doen is implementaties maken voor de algoritmes die je gebruikt voor het hashen van je wachtwoord / salt. Hier gebruik je dan dezelfde (functie)namen voor. Wanneer je PHP-versie dan op den duur (al dan niet automatisch) plaatsvindt schakel je -als het goed is :)- vlekkeloos over naar de standaard implementaties van PHP. Op deze manier maak je je software forwards compatible.


    Normaal gesproken biedt PHP.net in de user comments wel eens een implementatie voor functies die vrij nieuwe PHP-versies nodig hebben, maar in dit geval helaas niet. Je zult daarom even rond moeten kijken (Use the Google, Luke!), of, wanneer je toch gebruik maakt van een enkele hash-methode, zou je kunnen overwegen om die dan maar te gebruiken in plaats van password_hash / password_verify.

  • Zou er misschien ook een mogelijkheid zijn om deze naar PHP 5.5.0 te krijgen?


    want als ik PHP 5.5.0 zou hebben op de server, dan zal dat wel iets makkelijker maken.


    Wat voor server heb je precies?
    Indien een hosting/reseller account, dan zul hiervoor zul je contact moeten opnemen met je hosting.
    Indien je een VPS/Dedicated server hebt, dan kan je zelf de PHP versie verhogen.

  • Indien het een class is moet je die dan niet eerst defineren ?


  • Ik verzoek je zoals anderen al zeggen eerst contact op te nemen met je hostingprovider. Normaal os het vanzelfspreken dat een hostingprovider de hosting voorziet van de laatste php versie. Maar om je script naar oud aan te passen zal je in de toekomst alleen maar tegenwerken.


    Succes verder!

  • Ik verzoek je zoals anderen al zeggen eerst contact op te nemen met je hostingprovider. Normaal os het vanzelfspreken dat een hostingprovider de hosting voorziet van de laatste php versie. Maar om je script naar oud aan te passen zal je in de toekomst alleen maar tegenwerken.Succes verder!


    Verzoeken is een groot woord, hij kan ook eerst achterhalen wat er precies fout gaat.Zoals aangegeven maakt hij gebruik van de password_compat, hier zit een versie test in.Als hij dat bestand controleerd en de melding is "Pass" legt het niet aan zijn hosting maar aan de code.


    The runtime checks have been removed due to this version issue. To see if password_compat is available for your system, run the included version-test.php. If it outputs "Pass", you can safely use the library. If not, you cannot.


    Als hij de eerste version-test.php uitvoerd weet hij dus ook of het aan de code legt of aan de hosting zelf.
    Beetje onderzoek doen naar je foutmelding kan geen kwaad toch? ;)

  • Indien het een class is moet je die dan niet eerst defineren ?



    Hoeft niet te zijn als je via een singleton werkt dan dan maak je de instance van de class binnen de class zelf aan doormiddel van een static function. En dan kan je bijvoorbeeld:


    PHP
    <?php
    $instance = empire::getInstance();
    $instance->password_verify();

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!