Olyan routing, ami lekezeli a GET és POST requestet is?
Próbálok olyan routingot írni, ami lekezeli a GET és POST requestet is. Egyenlőre sikertelenül. Valaki tudna benne segíteni?
Amit eddig csináltam:
EGy htaccess file:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
</IfModule>
Egy index.php:
<?php
define('DS', DIRECTORY_SEPARATOR);
define("ROOT", getcwd() . DS);
$url = $_SERVER['REQUEST_URI'];
?>
<html>
<body>
<form action="welcome_get.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
<br />
<a href="proba/test"> Test link</a>
<br/>
<?php
require_once (ROOT.DS.'framework'.DS.'routing.php');
?>
</body>
</html>
És a routing.php:
<?php
echo "requested URL:".$url;
global $url;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$urlArray = array();
$urlArray = explode("/",$url);
$controller = $urlArray[1];
array_shift($urlArray);
$action = $urlArray[1];
array_shift($urlArray);
$queryString = $urlArray;
echo "<br>";
echo "Controller:" .$controller;
echo "<br>";
echo "Action:".$action;
echo "<br>";
echo "querystring:".$querystring;
function __autoload($className) {
if (file_exists(ROOT . DS . 'library' . DS . strtolower($className) . '.class.php')) {
require_once(ROOT . DS . 'library' . DS . strtolower($className) . '.class.php');
} else if (file_exists(ROOT . DS . 'Application'.DS.'controllers' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'Application' . DS . 'controllers' . DS . strtolower($className) . '.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'models' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'models' . DS . strtolower($className) . '.php');
} else {
}
}
?>
Ha így adom meg a linket pl: action="probe/test", akkor minden ok és szétszedi controllerre és modellre
De amennyiben így adom meg a linket: valami.php?asd=valami, akkor már gondok vannak!
Ötlet? Megoldás?
Ez a sor if ($_SERVER["REQUEST_METHOD"] == "POST") {
nincs már benne a routingba
1, hasznalj composer autoloadert
2, __autoload, 7.2-tol deprecated, 8-ban pedig kivettek, nem tudom milyen verziot hasznalsz, de 8.0-at kellene
Eloszor ezeket ird at
ahogy van post úgy van get is
ha urlbe beirsz vmit az get
request method get
a ?a=1&b=2 szét se kell szedni, benne van $_GET-ben
erre példára tök felesleges oop
A kérdés, hogy hogyan érdemes lekezelni a GET és POST requesteket. Sok MVC példát találtam ami ilyen formában generál url-t: /controllername/methodname/parameter
Viszont mi van akkor, ha pl. ilyen az url: /valami.php?valtozo=érték&valtozo2=ertek2
Láttam olyan oldalakat, ahol mindkettő megjelent a böngészőben. Szóval mi erre a megoldás?
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!