Met zulke dus als PHPcodechecker is niks mis, maar als je een goede editor gebruikt, zoals PHPstorm of NetBeans IDE (gebruik ik), dan zie je ook de fouten en aanbevelingen.
Ikzelf gebruik regelmatig wel eens 3v4l.org (eval, voor wie het nog niet zag) als ik een stukje code wil uittesten voor het 'even snel'.
Bij het echte werk heb ik mijn lokale webserver en NetBeans IDE.
Dan zou ik uitstel aanvragen, als ik jouw was. Een script opbouwen zonder dat je weet wat het doet, is vragen om problemen en mogelijk een lage beoordeling.
Het probleem is waarschijnlijk (nog steeds) dat @Izildo tabel- en kolomnamen voorziet van 'normale quotes'. Dit levert een foutmelding op. Gebruik voor tabel- en kolomnamen `backticks` of gewoon geen aanhalingstekens en gebruik 'enkele quotes' om waarden te omvatten. In combinatie hiermee zou je real_escape_string() moeten gebruiken.
En zoals eerder aangegeven, header('Location: ...'); stopt de verdere executie van code niet. Daarom is het eigenlijk altijd zaak dat er een exit;-statement volgt op een header('Location: ...');.
Ik zou je aanraden de foutmeldingen te "leren lezen". De documentatiesite van PHP kan hier ook bij helpen. Je kunt een functiedefinitie rechtstreeks opsnorren door php.net/<functienaam> in je browser te gooien.
Warning: mysqli_error() expects parameter 1 to be mysqli, object given in on line 26 --> mysqli_error($query);
Dit vindt op regel 18 plaats in het bovenstaande fragment, niet op regel 26. Het helpt als je volledige fragmenten plaatst met de bijbehorende foutmeldingen, anders wordt het nogal een puzzel...
mysqli_error() retourneert een tekstuele omschrijving van de laatste fout die optrad, of een lege string als er geen fout was. Maar het moment dat je die functie daar aanroept snijdt geen hout omdat je daar nog niets gedaan hebt, en dus ook nog geen fout gemaakt kan hebben. Het argument dat deze functie verwacht is het connectie-object, niet het resultaat-object van een query. Dit is *precies* wat de foutmelding verkondigt ([color=#ff0000]expects parameter 1 to be mysqli, object given[/color]). Deze functie retourneert dus de laatste fout van een specifieke database-connectie.
Warning: mysqli_query() expects parameter 2 to be string, object given in on line 29 --> $result = mysqli_query($mysqli, $query);
Op regel 15 voer je de query al uit, zou dat niet gewoon:
$query = "SELECT * FROM admins WHERE naam='$username' AND password='$password'";
moeten zijn?
Vervolgens voer je -in je huidige opzet- het resultaat weer aan een query, dat gaat natuurlijk niet werken want mysqli_query() verwacht als tweede parameter de hierboven genoemde SQL-string en niet een resultaat-object. Dit is *precies* wat de foutmelding omschrijft ([color=#ff0000]expects parameter 2 to be string, object given[/color]).
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in on line 32 --> $rows = mysqli_num_rows($result);
Dit is een gevolg van de vorige foutmelding. Als je die oplost, zal deze ook verdwijnen.