Jump to content
php.lv forumi

Problēma ar $_GET


Forbidden

Recommended Posts

Man ir php fails, piem index.php, viņā inklūdoti citi faili. Mala, augša, un vidus.

Mala augša un vidus ir $_GET mainīgie.

<?php

$visas_malas = array (
          '1' => 'm1.php',
          '2' => 'm2.php',
      );
$mala = ( preg_match('/^('.implode('|',$visas_malas).')$/',$_GET['mala'] ) ? $_GET['mala'] : $visas_malas[1] );
$visi_contenti = array (
         'saturs' => 'saturs.php',
         '1' => '1.php',
           );
$content = ( preg_match('/^('.implode('|',$visi_contenti).')$/',$_GET['cont'] ) ? $_GET['cont'] : $visi_contenti[start] );
$visi_msg = array (
         '1' => 'q1.php',
         '2' => 'q2.php',
       );
$msg = (preg_match('/^('.implode('|',$visi_msg).')$/',$_GET['msg'] ) ? $_GET['msg'] : $visi_msg[1] );	


?>

(to kodu es salasiju ložņājot pa forumu, un pielāgoju savām vajadzībām, bet darbību aptuveni sapratu.)

Un tad šie faili attiecīgi inklūdoti index.php ar <?php include($content); ?> utt.

problēma tāda, ka es vēlos tikt vaļa no pagarinājuma .php.

Piem. tagad es uztaisu linku index.php?cont=1, tad adressbarā parādās index.php?cont=1.php, bet man vajag, lai tā arī parādās - index.php?cont=1.

Tātad jautājums ir: Kā man tikt vaļā no tā pagarinājuma .php?

Link to comment
Share on other sites

Nu a to "adressbarā parādās index.php?cont=1.php" tu taču iegūsti, ja izdrukā linku: <a href="index.php?cont=1.php">blabla...</a> ne? Tad vienkārši nedrukā tādus linkus (nu tb to .php paplašinājumu), bet pievieno programmātiski, tipa:

// ja tiek drukāts šāds links:
 echo '<a href="index.php?cont=1.php">blabla...</a>';
//...
// tad apstrādāt index.php failā GET padoto mainīgo cont šādi:
 echo 'ejam uz failu ' . $_GET['cont'] . '.php';

Link to comment
Share on other sites

Traks vai? uzhakos:)

kapēc nepatīk:

<?php
// switch
switch($i){
case 0:
  echo "i equals 0";
  break;
case 1:
  echo "i equals 1";
  break;
case 2:
  echo "i equals 2";
  break;
default:
  echo "i is not equal to 0, 1 or 2";
}
?>

?

Link to comment
Share on other sites

To bubu:

Es jau rakstu tā, kā tu iedevi, bet viņš izmet man ārā to 1.php :(

To blackhalt:

Es forumā ložņājot atradu tos preg_match un biju laimīgs, bet tagad pamēģināšu arī to switch. ;)

EDIT: tas switch strādā tikai ar tekstu, bet ne ar atsevišķām lapām. :blink:

Edited by Forbidden
Link to comment
Share on other sites

Tu pārlieku daudz sarežģī kautko. Skaties, vienkāršs piemērs:

 

Izveido failu 1.php:

<?php echo "esmu fails 1.php"; ?>

Izveido failu 2.php:

<?php echo "esmu fails 2.php"; ?>

Izveido failu index.php:

<?php 
 $arr = array('1', '2'); // kas drīkst būt
 $mala = (isset($_GET['mala']) ? $_GET['mala'] : '1');  // te var norādīt defaulto vērtību, ja nav neviena norādīta
 if (in_array($mala, $arr)) {
   $fails = $mala.'.php';  // te pieliekam klāt to .php ko lietotājs neredz.
 } else {
   $fails = '1.php'; // defaultā mala
 }
 echo '<html><body>';
 echo '<a href="?mala=1">Iet uz mala1</a><br/>';
 echo '<a href="?mala=2">Iet uz mala2</a><br/>';

 include($fails);

 echo '</body></html>';
?>

P.S. Taču atceries, ka lietotājs tāpat varēs atvērt tavu 1.php ierakstot to tieši ardesē: http://serveris.kautkaads.lv/1.php

Edited by bubu
Link to comment
Share on other sites

Strādā tavs kods, bubu, bet vel viens jautājums. piemēram man ir faili mala1.php un mala2.php. Kā man piespiest viņus tupēt zem cipariem 1 un 2? Es mēģināju šitā:

<?php
$arr = array(
'1' => 'mala1', 
'2' => 'mala2'
); // kas drikst but
$mala = (isset($_GET['mala']) ? $_GET['mala'] : '1');  // te var noradit defaulto vertibu, ja nav neviena noradita
if (in_array($mala, $arr)) {
  $fails = $mala.'.php';  // te pieliekam klat to .php ko lietotajs neredz.
} else {
  $fails = 'mala1.php'; // defaulta mala
}
echo '<html><body>';
echo '<a href="?mala=1">Iet uz mala1</a><br/>';
echo '<a href="?mala=2">Iet uz mala2</a><br/>';

include($fails);

echo '</body></html>';
?>

Bet nestrādā. :(

Edited by Forbidden
Link to comment
Share on other sites

Ko nozīmē tupēt? Domā zem linka lai tā rādās? Nu tad pamaini tekstu iekš a taga : <a href="?mala=2">2</a>

 

P.S. un nevajag to pašu uz PM sūtīt. Pietiek ja vienā vietā ieraksti jautājumu.

Link to comment
Share on other sites

×
×
  • Create New...