BlowMagnum Ierakstīts Janvāris 27, 2020 Share Ierakstīts Janvāris 27, 2020 Sveiki, Veidoju paštaisītu MVC sistēmu un šobrīd man index.php dokumenta ir sekojoša vienkārša forma: <form action = "/hack/login/" method = "POST"> <label> Username </label> <input type = "text" name = "username" Value = "laravel"> <label> Password </label> <input type = "text" name = "password" Value = "pwd"> <input type = "submit" name = "submit" Value = "Submit"> </form> Kā redzams formas action redirekto lietotāju uz /hack/login/ direktoriju, sekojoši manā pašveidotajā route.php failā esmu izveidojis sekojošu metodi: class route { public static $validRoutes = array(); public static function set($route, $function){ self::$validRoutes[] = $route; $uri = $_SERVER['REQUEST_URI']; $uri = strtolower($uri); if ($uri == $route) $function->__invoke(); } } Un attiecīgi routes.php failā izsaucu šo metodi sekojoši: route::set("/hack/login/", function() { LoginController::registerUser($_POST['username'], $_POST['password']); }); Šādā veidā padodot lietotāja ievadīto informāciju kontrolierim. Tas protams strādā, taču jautājums vai ir kāds labāks - korektāks veids kā padot šo ievadi kontrolierim? Turklāt, ja lietotājs bez redirekta pats ieies direktorijā /hack/login/ PHP atgriezīs erroru: Notice: Undefined index: username in C:\wamp64\www\hack\routes.php on line 18 Notice: Undefined index: password in C:\wamp64\www\hack\routes.php on line 18 Jo protams attiecīgie lauki nav aizpildīti, Help! Link to comment Share on other sites More sharing options...
AndrisBB Janvāris 27, 2020 Share Janvāris 27, 2020 Vai tiesham 2020 vel tiek izmantotas php formas? Link to comment Share on other sites More sharing options...
Liam Ethernety Janvāris 27, 2020 Share Janvāris 27, 2020 Tava kļūda ir tā, ka tu gribi uz kontrolieri padot jau apstrādātus $username un $password, nevis kontrolierī darboties pa taisno ar $_POST. Kāpēc tā ir kļūda? Tāpēc, ka var būt daudz vairāk kā tikai divi $_POST input. Piemēram, reģistrējoties tu prasīsi arī gender, city, country, email preferences un tamlīdzīgi. Ar tavu esošo piegājienu tad nāksies uz registerUser kontroliera metodi padot 10+ parametrus, kas ir ļoti slikti. Tātad, vienkāršotā variantā, nepadod uz kontroliera metodi nekādus parametrus. Kontroliera metodē piekļūsti uzreiz $_POST pa taisno (tas taču ir superglobal, pieejams visur). Pirms 2 minūtēm , AndrisBB teica: Vai tiesham 2020 vel tiek izmantotas php formas? Pirms cilvēks nokļūst līdz kompilētam, reaktīvam javascript, REST API un SPA appām, domāju, ka parasts MVC ar php formām ir diezgan dabisks solis mācību procesā. 1 Link to comment Share on other sites More sharing options...
BlowMagnum Janvāris 27, 2020 Author Share Janvāris 27, 2020 Pirms 14 minūtēm , Liam Ethernety teica: Tava kļūda ir tā, ka tu gribi uz kontrolieri padot jau apstrādātus $username un $password, nevis kontrolierī darboties pa taisno ar $_POST. Kāpēc tā ir kļūda? Tāpēc, ka var būt daudz vairāk kā tikai divi $_POST input. Piemēram, reģistrējoties tu prasīsi arī gender, city, country, email preferences un tamlīdzīgi. Ar tavu esošo piegājienu tad nāksies uz registerUser kontroliera metodi padot 10+ parametrus, kas ir ļoti slikti. Tātad, vienkāršotā variantā, nepadod uz kontroliera metodi nekādus parametrus. Kontroliera metodē piekļūsti uzreiz $_POST pa taisno (tas taču ir superglobal, pieejams visur). Ahhh, tie taču ir superglobals, un tiešām ir pieejami visur, es biju pārpratis un iedomājies ka $_POST vērtības obligāti ir jānodod no dokumenta-dokumentā. Šis glābj, paldies! Link to comment Share on other sites More sharing options...
Liam Ethernety Janvāris 27, 2020 Share Janvāris 27, 2020 (labots) Pirms 8 minūtēm , BlowMagnum teica: Ahhh, tie taču ir superglobals, un tiešām ir pieejami visur, es biju pārpratis un iedomājies ka $_POST vērtības obligāti ir jānodod no dokumenta-dokumentā. Šis glābj, paldies! Piebildīšu, ka, lai gan $_POST ir pieejams visur, atbilstoši MVC standartiem vienīgā vieta, kur tam vajadzētu/drīkst piekļūt, ir tieši kontrolieris. Nekādā gadījumā nedrīkst aiztikt $_POST tādās vietās kā Modelis vai papildus helper klases. Ar laiku sapratīsi, kāpēc. Labots Janvāris 27, 2020 - Liam Ethernety 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!