Jump to content
php.lv forumi

Lapu caur header pieprasa, bet nepārmet


cipcaps

Recommended Posts

Man ir sekojošs kods :

function redirect($p,$red=true){
           if($red==true){
               @$red = header("HTTP/1.1 301 Moved Permanently");
               @$redirect = header('Location: '.$p);
           } else {
               $red = false;
               $redirect = false;
           }
           if(!$redirect||!$red){
               echo '<script>
               window.location.href="'.$p.'";
               </script>';
           }
           die(); 
   }

 

Kad pieprasu lapu izpildās šāds kods :

@include($global['modFold'].$file);
if(!defined('moduleLoaded')){
   $mk->error('11');
}

 

Error funkcija :

function error($code,$red=true){
       global $global,$error;
       $location = $global['siteUrl'].str_replace('%C%',$code,$error['errorPage']);
       $errInfo = urldecode((isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'')).'|'.urlencode((isset($_SERVER['PHP_SELF'])?$_SERVER['PHP_SELF']:''));
       setcookie('mkError',$errInfo,time()+10000,'/',$global['server']);
       $this->redirect($location,$red);
       die();
   }

 

Bet tad ja "if(!defined('moduleLoaded'))" izpildās, t.i. ielādējas modulis un šī vērtība ir, viņš vienalga to erroru pieprasa, bet nepārmet lapu, tikai backgroundā pieprasa, un ja header aizvāc tad tā nav, vai arī ja $red definē kā false

Link to comment
Share on other sites

lol, šis ir pats dīvainākais redirect, kāds jebkad ir redzēts!!!

manuāļa definīcija

void header ( string string [, bool replace [, int http_response_code]] )

void nozīmē, ka šī funkcija neizdod vērtību. tāpēc wtf???

@$redirect = header('Location: '.$p);

 

un ja jau redirectā ir die(), tad priekš kam vēlreiz raksti die() iekš error()?

 

kā jau briedis teica, noņem nost @, lai redzētu error message

 

kr4 pārraksti to kodu vnkāršāk bez visādiem brīnumiem

Link to comment
Share on other sites

function redirect($p){
       header("HTTP/1.1 301 Moved Permanently");
       header('Location: '.$p);
       echo '<script>
       window.location.href="'.$p.'";
       </script>';
   }

 

ook, šitāds ir jaunais, nekādas kļūdas neatgriež, bet DB vienalga poustojas, ka ir errors atgriezts, t.i. noticis redirekts uz error lapu.

Edited by cipcaps
Link to comment
Share on other sites

normāls redirect manā izpratnē būtu šāds

function redirect($p){
       header("HTTP/1.1 301 Moved Permanently");
       header('Location: '.$p);
       exit;
}

bet error droši vien izdod tāpēc, ka konstante 'moduleLoaded' nav definēta

 

noņem visus @

un pārbaudi inklūdojamo failu, vai tas nodefinē šādu konstanti

 

testē/debugo pakāpeniski pa mazam gabalam, kamēr pamani vietu kur pirmīt bija ok, bet vairs nav

Edited by 2easy
Link to comment
Share on other sites

function redirect($p){
       header("HTTP/1.1 301 Moved Permanently");
       header('Location: '.$p);
       echo '<script>
       window.location.href="'.$p.'";
       </script>';
   }

 

ook, šitāds ir jaunais, nekādas kļūdas neatgriež, bet DB vienalga poustojas, ka ir errors atgriezts, t.i. noticis redirekts uz error lapu.

 

Ņem arā to echo. Nosūtot location headerī lietotājs tiek uzreiz pāradresēts. Pēc šīs darbības vairs nevajadzētu neko darīt, bet vienkārši uz taisi exit().

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...