2016-06-22 17 views
0

私はPHPヘッダを使ってPHP-HTMLサイトを介してユーザをプッシュしますが、これをしようとすると珍しい問題が発生します。PHPヘッダが奇妙な問題をリダイレクト

コンテンツは、画面に表示がない空白、代わりに再指向URLです、しかし、URLバーには、まだ再指向する前に、古いURLを示しているようです。

なしecho "";文、これを引き起こしている可能性がありprint_r();文またはvar_dump();文、また任意の野生のHTMLまたはホワイトスペースがある(私は三度チェックしました、すべてのHTMLが<<<HTML [htmlhere] HTML;に包まれ、ホワイトスペースがされているがありません「&が置き換え検索」を使用して排除)

私はまた、無支援に私のヘッダコードの後に​​exit();を使用しようとしました。私がここで愚かであれば誰でも私に知らせることができますか?

コード

<?PHP 
if(!isset($_SESSION)) 
{ 
    session_start(); 
} 
function getPage($link) 
{ 
    $contents=""; 
    $cSession=curl_init(); 
    curl_setopt($cSession,CURLOPT_URL,$link); 
    curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($cSession,CURLOPT_HEADER,true); 
    curl_setopt($cSession,CURLOPT_FOLLOWLOCATION,false); 
    $contents.=curl_exec($cSession); 

    if(preg_match('#HTTP/1.1(.*)#',$contents,$t)) 
    { 
    $code=trim($t[1]); 
    } 
    else 
    { 
    $code=""; 
    } 

    if($code=="301 Moved Permanently") 
    { 
    if(preg_match('#Location:(.*)#',$contents,$r)) 
    { 
     $l=trim($r[1]); 
    } 

    $contents=""; 
    $handler=fopen($l,"r"); 

    while(!feof($handler)) 
    { 
     $contents.=fread($handler,1024); 
    } 

    fclose($handler); 
    } 
    else if($code=="200 OK") 
    { 
    $contents=curl_exec($cSession); 
    } 
    else 
    { 
    $contents=""; 
    } 
    curl_close($cSession); 

return $contents; 
} 

function checkPage($content) 
{ 
    $links=array(); 
    $textLen=strlen($content); 
    if($textLen>10) 
    { 
    $startPos=0; 
    $valid=true; 

    while($valid) 
    { 
     $spos=strpos($content,'<a',$startPos); 
     if($spos<$startPos) 
     { 
     $valid=false; 
     } 
     else if($spos===FALSE) 
     { 
     $valid=false; 
     } 
     else 
     { 
     $spos=strpos($content,'href',$spos); 
     $spos=strpos($content,'"',$spos)+1; 
     $epos=strpos($content,'"',$spos); 
     $startPos=$epos; 
     $link=substr($content,$spos,$epos-$spos); 
     if(strpos($link,"http://")!==false) 
     { 
      $link=rtrim($link,'/'); 
      $links[]=$link; 
     } 
     else if(strpos($link,"https://")!==false) 
     { 
      $link=rtrim($link,'/'); 
      $links[]=$link; 
     } 
     } 
    } 
    } 
    return $links; 
} 

function checkArray($array,$url) 
{ 
    $new_array=array(); 
    $update=array(); 

    foreach($array as $child) 
    { 
    if(strpos($child,$url)===FALSE) 
    { 
     $child=""; 
    } 
    else 
    { 
     if($child===$url) 
     { 
     $child=""; 
     } 
     $new_array[]=$child; 
    } 
    } 

    $new_array=array_unique($new_array); 
    $new_array=array_filter($new_array); 

    return $new_array; 
} 

$v_url_to_check=""; 
$v_api=""; 

if(isset($_POST["URL"])&&isset($_POST["Feedback"])) 
{ 
    $v_url_to_check=filter_var($_POST["URL"],FILTER_SANITIZE_URL); 
    $v_api=filter_var($_POST["Feedback"],FILTER_SANITIZE_STRING); 
} 
else if(isset($_POST["URL"])&&!isset($_POST["Feedback"])) 
{ 
    $v_url_to_check=filter_var($_POST["URL"],FILTER_SANITIZE_URL); 
    $v_api=""; 
} 
else 
{ 
    $_SESSION["Message"]="BadData"; 
    header("Location:".$_SESSION['loc'],true,301); 
    exit; 
} 

if(strpos($v_url_to_check,".")===FALSE)// 
{ 
    $_SESSION["Message"]="Failed"; 
    header("Location:".$_SESSION['loc'],true,301); 
    exit; 
} 
else 
{ 
    $a_content=checkPage(getPage($v_url_to_check)); 
    $new_array=checkArray($a_content,$v_url_to_check); 

    $count=0; 
    foreach($new_array as $child) 
    { 
    $count++; 
    } 
    $i=0; 
    foreach($new_array as $childs) 
    { 
    $update["Child$i"]=$childs; 
    $i++; 
    } 

    if($count!=0) 
    { 
    $_SESSION["Message"]="Success"; 
    $_SESSION["Links"]=$count; 
    $_SESSION["ReturnedArray"]=$update; 
    $_SESSION["RequestedURL"]=$v_url_to_check; 
    $_SESSION["FeedbackValue"]=$v_api; 

    header('Location:'.$_SESSION['loc'],true,301); 
    exit; 
    } 

    else 
    { 
    $_SESSION["Message"]="Failed"; 

    header("Location:".$_SESSION['loc'],true,301); 
    exit; 
    } 
} 
?> 

$_SESSION['loc']は、メインコード(のindex.php)に設定されているものの、それは再演出で何の問題を持っていないとして、私はそれを含めていませんよ。

EDITheader("Location: ".$_SESSION['loc'],true,301);(コロンの後にスペースを使用しては)

答えて

0

大丈夫です。うわー、私は全く間違っていた!それは問題であるリダイレクトではなく、主なインデックスページ(フォームにPHPコードを完全にうまくリダイレ​​クトしました)

私は次のコードを持っていました。

<META name="viewport" content="width=device-width, initial-scale=1"> 
<LINK rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> 
<SCRIPT src="//code.jquery.com/jquery-1.11.3.min.js"></SCRIPT> 
<SCRIPT src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></SCRIPT> 

それはそれを殺した事jqueryのたなど、思わ

CODE:アウト問題を解決しました。

正確にはどうしたかわかりませんが、これを削除すると機能が一部削除されます。私は、その場で値を変更するHTMLフォーム入力範囲スライダが必要です。誰かが見て、jqueryがPHPのヘッダーの位置情報をクラッシュさせる可能性がどのようにコメントに私を教えたい場合は、私は大歓迎です。

0

は次のように場所の後にスペースを使用してみてください結果に違いはありませんでしたエラーの可能性があり、

header("Location: ".$_SESSION['loc'],true,301); 
スペースによるものです

また、恒久的または一時的なリダイレクトのヘッダーについては、このリンクを参照してください。 Manual

+0

それはそれではありませんでしたが、とにかく感謝します。 – Raisus