Closed steampixel closed 4 years ago
Can you please give me some more details about your setup?
Link: http://localhost/simplePHPRouter Code from index.php " `<?php
// Use this namespace use Steampixel\Route;
// Include router class include 'src/Steampixel/Route.php';
// var_dump($_GET); // exit();
function navi() { echo <<<EOD Navigation:
EOD; }
// Add base route (startpage) Route::add('/', function() { navi(); echo 'Welcome :-)'; });
// Another base route example Route::add('/index.php', function() { navi(); echo 'You are not really on index.php ;-)'; });
// Simple test route that simulates static html file // TODO: Fix this for some web servers Route::add('/test.html', function() { navi(); echo 'Hello from test.html'; });
// This route is for debugging only // It simply prints out some php infos // Do not use this route on production systems! Route::add('/phpinfo', function() { navi(); phpinfo(); });
// Post route example Route::add('/contact-form', function() { navi(); echo '
'; }, 'get');// Post route example
Route::add('/contact-form', function() {
navi();
echo 'Hey! The form has been sent:
';
print_r($_POST);
}, 'post');
// Get and Post route example Route::add('/get-post-sample', function() { navi(); echo 'You can GET this page and also POST this form back to it'; echo '
'; if (isset($_POST['input'])) { echo 'I also received a POST with this data:// Route with regexp parameter
// Be aware that (.) will match / (slash) too. For example: /user/foo/bar/edit
// Also users could inject SQL statements or other untrusted data if you use (.)
// You should better use a saver expression like /user/([0-9])/edit or /user/([A-Za-z])/edit
Route::add('/user/(.*)/edit', function($id) {
navi();
echo 'Edit user with id '.$id.'
';
});
// Accept only numbers as parameter. Other characters will result in a 404 error Route::add('/foo/([0-9]*)/bar', function($var1) { navi(); echo $var1.' is a great number!'; });
// Crazy route with parameters
Route::add('/(.)/(.)/(.)/(.)', function($var1,$var2,$var3,$var4) {
navi();
echo 'This is the first match: '.$var1.' / '.$var2.' / '.$var3.' / '.$var4.'
';
});
// Long route example
// By default this route gets never triggered because the route before matches too
Route::add('/foo/bar/foo/bar', function() {
echo 'This is the second match (This route should only work in multi match mode)
';
});
// Trailing slash example
Route::add('/aTrailingSlashDoesNotMatter', function() {
navi();
echo 'a trailing slash does not matter
';
});
// Case example
Route::add('/theCaseDoesNotMatter',function() {
navi();
echo 'the case does not matter
';
});
// 405 test Route::add('/this-route-is-defined', function() { navi(); echo 'You need to patch this route to see this content'; }, 'patch');
// Add a 404 not found route
Route::pathNotFound(function($path) {
// Do not forget to send a status header back to the client
// The router will not send any headers by default
// So you will have the full flexibility to handle this case
header('HTTP/1.0 404 Not Found');
navi();
echo 'Error 404 :-(
';
echo 'The requested path "'.$path.'" was not found!';
});
// Add a 405 method not allowed route
Route::methodNotAllowed(function($path, $method) {
// Do not forget to send a status header back to the client
// The router will not send any headers by default
// So you will have the full flexibility to handle this case
header('HTTP/1.0 405 Method Not Allowed');
navi();
echo 'Error 405 :-(
';
echo 'The requested path "'.$path.'" exists. But the request method "'.$method.'" is not allowed on this path!';
});
// Run the Router with the given Basepath // If your script lives in the web root folder use a / or leave it empty Route::run('/');
// If your script lives in a subfolder you can use the following example // Do not forget to edit the basepath in .htaccess if you are on apache // Route::run('/api/v1');
// Enable case sensitive mode, trailing slashes and multi match mode by setting the params to true // Route::run('/', true, true, true);`
"
On click >> http://localhost/simplePHPRouter Show this :
Error 404 :-( The requested path "/simplePHPRouter" was not found!
try changing your path to /simplePHPRouter/ since your executing the script there.
Route::run('/simplePHPRouter/'); or Route::run('./');
Idem. "Error 404 :-( The requested path "/simplePHPRouter" was not found!"
Hi,
I think you have done something strange :-) (I hope so ;-) )
Can you confirm this? If you can confirm this there must be another strange kind of an error.
Hi, Now, worked on click on http://localhost/simplePHPRouter/
But when I click on http://localhost/simplePHPRouter/test.html redirect me to http://localhost/test.html .
In index.php from directory simplePHPRouter, I put :
Route::add('/test.html', function() { navi(); echo 'Hello from test.html'; });
Hey,
the router does no automatic redirection. I think you missed to alter the menu. In the index.php file there is a function to print a simple demo menu called navi(). But this menu only works if the router runs directly on the domain without subfolder. Read this section: https://github.com/steampixel/simplePHPRouter#use-a-different-basepath. Take a look at the HTML links inside the menu. They will point hard to /test.html and other locations relative to the domain. There is no automatic link generator that will replace the demo links with /simplePHPRouter/test.html . They will still point to the defined locations.
If you want you can define your basepath as a variable on top of your index.php. You can than use this variable inside the Route::run call and you can use this variable to automatic prepend your links with your basepath.
I will create a new issue to pick up this idea for the demo index.php
https://github.com/florescuadrian86 wrote:
Hello. I contact you from github, I try install this https://github.com/steampixel/simplePHPRouter/tree/master on local host, on xampp.
If this is my path C:\xampp\htdocs\simplePHPRouter How put here? // Run the router Route::run('/');