Hej Wf,
Jag har lite problem här med min rewrite rule.
Så här ser min kod ut:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ /index.php?team=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ /index.php?team=$1
RewriteRule ^info/([a-z_-]+)/?$ /index.php?info=$1
RewriteRule ^script/([a-z_-]+)/?$ /script/index.php?do=$1
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /index.php?team=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /index.php?team=$1&page=$2
Detta fungerar utmärkt med alla undersidor osv. Problemet är när jag vill köra formulär och ska välja action.
Om jag kör med:
action="/script/index.php"
Så fungerar det inte.
Inte heller om jag kör med:
action="/script/skapalag"
Hur ska jag göra för att mina formulär ska fungera tillsammans med min rewriterule?
Tack på förhand!
metalboyMedlem sedan jan. 2005953 inlägg Lägg till RewriteCond för varje RewriteRule att det inte ska gälla om det finns en fil eller katalog med det namnet. Så här:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ... ...
Lägg också till flaggan QSA (Query String Append) på dina regler, så här
RewriteRule ... ... [QSA]
Hej,
Tack för svar.
Såhär ser min kod ut nu:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ /index.php?team=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ /index.php?team=$1
RewriteRule ^info/([a-z_-]+)/?$ /index.php?info=$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^script/([a-z_-]+)/?$ /script/?do=$1 [QSA]
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /index.php?team=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /index.php?team=$1&page=$2
Dock får jag fortfarande de inte att fungera. Missade jag nått? :)
Tack på förhand
metalboyMedlem sedan jan. 2005953 inlägg Och vad betyder att du inte får det att fungera? Får du något felmeddelande? Vad händer?
Använder du GET eller POST som method för formulärdatat?
Hej igen.
Form:
<form name="skapa" action="/script/skapalag" method="POST" />
Det som händer är att jag hamnar på /script/skapalag
Dock att den tror att det är ett lag, dvs att den följer denna rewrite rule: RewriteRule ^([a-zA-Z0-9_-]+)/$ /index.php?team=$1 och inte RewriteRule ^script/([a-z_-]+)/?$ /script/?do=$1 [QSA]
Vad gör jag för fel? :)
metalboyMedlem sedan jan. 2005953 inlägg Lägg till flaggan L (Last) för script-regeln.
RewriteRule ^script/([a-z_-]+)/?$ /script/?do=$1 [QSA, L]
Hej igen,
Testade att lägga till det och tyvärr gjorde det ingen skillnad..
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ /index.php?team=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ /index.php?team=$1
RewriteRule ^info/([a-z_-]+)/?$ /index.php?info=$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^script/([a-z_-]+)/?$ /script/?do=$1 [QSA,L]
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /index.php?team=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /index.php?team=$1&page=$2
Och det är alltså när kan kör ett formulär för /script/text
:/
metalboyMedlem sedan jan. 2005953 inlägg Okej, nu har jag testat och följande .htaccess-fil verkar fungera så som du vill:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^info/([a-z_-]+)/?$ /index.php?info=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^script/([a-z_-]+)/?$ /script/?do=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)$ /index.php?team=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/$ /index.php?team=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /index.php?team=$1&page=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /index.php?team=$1&page=$2 [L]
Notera att det är viktigt i vilken ordning reglerna kommer
Tillägg:
QSA-flaggan behövs inte eftersom du använder method="POST" på ditt formulär, men jag tog med den ändå :)
metalboy skrev:
Okej, nu har jag testat och följande .htaccess-fil verkar fungera så som du vill:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^info/([a-z_-]+)/?$ /index.php?info=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^script/([a-z_-]+)/?$ /script/?do=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)$ /index.php?team=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/$ /index.php?team=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /index.php?team=$1&page=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /index.php?team=$1&page=$2 [L]
Notera att det är viktigt i vilken ordning reglerna kommer
Tillägg:
QSA-flaggan behövs inte eftersom du använder method="POST" på ditt formulär, men jag tog med den ändå :)
Hej,
tack för ditt svar!
Det mesta verkar fungera nu. Jag kan tex nå /script/do osv nu.
Dock så fungerar det inge bra tillsammans med min php. Så fort jag tex har funktionen
$do = mysql_real_escape_string($_GET['do']);
Så fungerar det inte. Skriver jag däremot tex:
echo $_GET['do'];
Så fungerar det.
Vad beror det på? Detta gör att mina script inge fungerar nå bra.
Vet du vad det kan bero på?
Tack på förhand
metalboyMedlem sedan jan. 2005953 inlägg Och då var vi där igen då... :)
metalboy skrev:
Och vad betyder att du inte får det att fungera? Får du något felmeddelande? Vad händer?
metalboy skrev:
Och då var vi där igen då... :)
Ah förlåt :)
Det blir bara en vit sida.
Skriver jag enbart
<?php
echo "hej";
?>
Så fungerar det. Men om jag kör tex
$do = mysql_real_escape_string($_GET['do']);
Så blir det bara vitt. 500 felmeddelande.
Jag vet att scriptsidan fungerar för det har jag testat från annat håll.
Vet du vad det kan vara?
prplxrMedlem sedan juni 2012582 inlägg Felet är att du inte har någon koppling mot MySQL. Detta krävs för att du ska kunna använda funktionen mysql_real_escape_string().
PS! Överväg att gå över till de nyare varianterna såsom mysqli eller PDO då mysql_x framöver kommer upphöra.
prplxr skrev:
Felet är att du inte har någon koppling mot MySQL. Detta krävs för att du ska kunna använda funktionen mysql_real_escape_string().
PS! Överväg att gå över till de nyare varianterna såsom mysqli eller PDO då mysql_x framöver kommer upphöra.
Hm okej. Men jag har en vanlig databaskoppling högst upp på sidan?
Den fungerar ju om jag kör den separat utan rewriterule.
Måste jag göra nått speciellt med den?
mysql_connect("localhost", "user", "password");
mysql_select_db("databas") or die("Databaskopplingen kunde inte upprättas.");
mysql_query("SET NAMES UTF8");
prplxrMedlem sedan juni 2012582 inlägg Är du säker på att den koden körs? Pröva att, där du nu har mysql_real_escape_string("somethingsomething"), köra mysql_query("SELECT * FROM entabell LIMIT 1") och se ifall det blir något knas.
prplxr skrev:
Är du säker på att den koden körs? Pröva att, där du nu har mysql_real_escape_string("somethingsomething"), köra mysql_query("SELECT * FROM entabell LIMIT 1") och se ifall det blir något knas.
Hej,
Det fungerade. Tog bort mysql_real_escape_string och körde en Select istället och den hämtar data från databasen.. Väldigt märkligt? Eller?
prplxrMedlem sedan juni 2012582 inlägg Ja, det är väldigt märkligt. Det kan jag inte alls förstå. Vad är det du escapear då? Kan du flytta det?
prplxr skrev:
Ja, det är väldigt märkligt. Det kan jag inte alls förstå. Vad är det du escapear då? Kan du flytta det?
Tar jag bort mysql_real_escape_string så fungerar scriptet utan fel... hmm.
Varit med om något liknande tidigare?
Finns det andra sätt så jag kan säkra mig från attacker om jag inte kan använda mig av mysql_real_escape_string?
prplxrMedlem sedan juni 2012582 inlägg Ja på båda frågorna. Ibland har jag haft sådana här, till synes oförklarliga, problem med mysql_real_escape_string().
Ett annat sätt att skydda sig från SQL injections är som jag nämnde i mitt första svar att gå över från mysql_x till PDO. Om du kör prepared statements i PDO så existerar inte SQL injections. Det är helt enkelt omöjligt och du behöver inte bry dig om det alls.
prplxr skrev:
Ja på båda frågorna. Ibland har jag haft sådana här, till synes oförklarliga, problem med mysql_real_escape_string().
Ett annat sätt att skydda sig från SQL injections är som jag nämnde i mitt första svar att gå över från mysql_x till PDO. Om du kör prepared statements i PDO så existerar inte SQL injections. Det är helt enkelt omöjligt och du behöver inte bry dig om det alls.
Okej, är det ett stort steg att gå från mysql_x till PDO?
Någon annan som vet varför det inte fungerar med mysql_real_espace_string() för mig? :)
Tack på förhand!
prplxrMedlem sedan juni 2012582 inlägg
Thompa__85 skrev:
-
Okej, är det ett stort steg att gå från mysql_x till PDO?
-
Någon annan som vet varför det inte fungerar med mysql_real_espace_string() för mig? :)
Tack på förhand!
-
Det beror på. Är du van vid objektorienterad PHP så är det absolut inte stort, annars kanske det kan kännas lite ovant, men man vänjer sig ganska fort.
-
Om du postar hela din kod så kan vi ju titta på den, men de få rader vi fått hittills är tyvärr inte till så mycket hjälp.
PS! Jag skickade ett PM till dig utifall du missat det.