Zoek formulier met GET
ik heb dit script
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form method="GET" action="/p=member/s=search">
Voorbeeld: "<b>a*</b>" zal een lijst genereren met alle namen die beginnen met een A!<br />
<!--<input type="hidden" name="s" value="search"/>-->
<input type="text" name="q" value="<?php if (isset($_REQUEST['q'])) { echo $_REQUEST['q']; } ?>"/>
<input type="submit" value="Zoek"/>
</form>
<?php
if($_GET['s'] == "search")
{
$_GET['q'] = preg_replace('/\*/','',$_GET['q']);
$_GET['q'] = htmlspecialchars($_GET['q']);
$_GET['q'] = addslashes($_GET['q']);
$dbres = mysql_query("SELECT login,UNIX_TIMESTAMP(signup) AS signup,attack,defence,clicks,cash,bank,level,clan,login FROM users WHERE login LIKE '".$_GET['q']."%' ORDER BY login LIMIT ".$begin.",30")or die (mysql_error());
}
?>
Voorbeeld: "<b>a*</b>" zal een lijst genereren met alle namen die beginnen met een A!<br />
<!--<input type="hidden" name="s" value="search"/>-->
<input type="text" name="q" value="<?php if (isset($_REQUEST['q'])) { echo $_REQUEST['q']; } ?>"/>
<input type="submit" value="Zoek"/>
</form>
<?php
if($_GET['s'] == "search")
{
$_GET['q'] = preg_replace('/\*/','',$_GET['q']);
$_GET['q'] = htmlspecialchars($_GET['q']);
$_GET['q'] = addslashes($_GET['q']);
$dbres = mysql_query("SELECT login,UNIX_TIMESTAMP(signup) AS signup,attack,defence,clicks,cash,bank,level,clan,login FROM users WHERE login LIKE '".$_GET['q']."%' ORDER BY login LIMIT ".$begin.",30")or die (mysql_error());
}
?>
Maar als ik nu zoek dan ziet mijn URL er zo uit
http://www.blaat.net/p=member/s=search?q=a
maar doet niks verander ik het naar zo
http://www.blaat.net/p=member/s=search/q=a
Dan laat ie wel de zoek resultaten zien.
Hoe kan ik dit verhelpen.
Heb ook al met POST gewerkt maar dan zie ik niks.
Alvast bedankt voor de hulp.
Die QSA betekend: Query Append String, oftewel, plak de query string ook achter de omgeschreven URL.
De L betekend Last: hierna geen regels meer uitvoeren (deze heeft niks met je script te maken, maar vermoed wel dat deze achter je RewriteRule staat)
had dit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
RewriteEngine On
RewriteBase /
# Bestaande bestanden of mappen uitsluiten
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.*?)$ $1 [L,QSA]
# Alles naar n parameter
RewriteRule ^(.*?)$ index.php?p=$1
Verandert naar dit
RewriteEngine On
RewriteBase /
# Bestaande bestanden of mappen uitsluiten
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.*?)$ $1 [L]
# Alles naar n parameter
RewriteRule ^(.*?)$ index.php?p=$1 [L,QSA]
Dus de l,qsa op de verkeerde plek.
RewriteBase /
# Bestaande bestanden of mappen uitsluiten
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.*?)$ $1 [L,QSA]
# Alles naar n parameter
RewriteRule ^(.*?)$ index.php?p=$1
Verandert naar dit
RewriteEngine On
RewriteBase /
# Bestaande bestanden of mappen uitsluiten
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^(.*?)$ $1 [L]
# Alles naar n parameter
RewriteRule ^(.*?)$ index.php?p=$1 [L,QSA]
Dus de l,qsa op de verkeerde plek.
Gewijzigd op 25/05/2010 10:38:51 door thomas de vries