Sensibiliate la litere mari si mici

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Sensibiliate la litere mari si mici

Deci problema e asa:
Daca cineva tasteaza ".../mesaje-Dragoste.php' sau ".../mesaje-DrAgOsTE.php" da eroare, dar daca scrie: "..../mesaje-dragoste.php" (cu litere mici) afiseaza.
Problema e la sensibilitate la litere mari si mici, cum rezolv problema ?

In htaccess :

Cod: Selectaţi tot

RewriteRule ^mesaje-([A-Za-z0-9-]+).php$ mesaje.php?categorie=$1 [NC,L]
In PHP:

Cod: Selectaţi tot

<?php session_start(); ini_set('display_errors',1); error_reporting(E_ALL);
include('connect.php');
if(isset($_GET['categorie']))
{ $categorie = $_GET['categorie']; 
$cat = array('dragoste', '1-8-martie', 'paste', 'craciun', 'anul-nou', 'onomastica');
}
if(isset($categorie))
{
if($categorie == in_array($categorie, $cat))
{
echo 'categorie '.$categorie.'';
}
else
{
echo 'eroare';
}
}
else
{
echo 'pagina principala';
}
?>

MarPlo Mesaje:4343
Salut,
Daca datele le ai inregistrate cu litere mici, poti folosi functia: strtolower() ca sa transformi datele pimite in litere mici.
Exemplu:

Cod: Selectaţi tot

$categorie = strtolower($_GET['categorie']);
 

cadou Mesaje:328
Nu merge si cu litere mici si mari ?
Adica daca cineva tasteaza din greseala cu litere mari sau amestecate litere mari cu mici sa afiseze, nu sa dea eroare.

MarPlo Mesaje:4343
Tocmai la asta ajuta functia strtolower(), nu conteaza ce fel de litere sunt, iti transforma in litere mici valorile date ei in codul PHP.
Incearca exemplu /codul dat mai sus, sau adapteaza cum stii.
Mai mult nu e de explicat, doar testezi si verifici cu "echo" sau "var_dump()" datele folosite.

cadou Mesaje:328
Nu la asta ma referam.
Deci in baza de date am categoriile cu litere mici, iar la conditia:

Cod: Selectaţi tot

if($cat == 'test')  {
 echo 'test';
}
Daca cineva tasteaza adresa de genu: "site.ro/xxxx-test.php", ii afiseaza ca e scris cu litere mici; dar daca tasteasa "site.ro/xxxx-TEST.php" sau "site.ro/xxxxxx-TEst.php" afiseaza eroarea definita.

MarPlo Mesaje:4343
Am inteles. Daca e vorba de numele fisierelor, din ce cunosc, nu prea ai ce face; nu tine de scriptul PHP, asta depinde de sistemul de operare si serverul respectiv.
De exemplu, pe Windows nu se face diferenta intre litere mari si mici la numele fisierelor /directoarelor ("fisier.ext" e acelasi cu "FISieR.ext"), dar pe sistemele Linux /Unix se face diferenta".
Trebuie ceva setari in fisierul "httpd.conf" din serverul Apache, dar nu stiu ce anume.

cadou Mesaje:328
Am rezolvat problema.
Pana la urma am facut un array , ceva cu strtolower(), si am reusit ce vroiam.