2012-04-05 6 views
0

localhost apacheサーバー(WAMPサーバー)ではさまざまな種類の作業がありますが、私はそれをオンラインで入れてしまえば、その仕事はしません!私は多くの機能が無効になっているので、私は私のサービスを好きではない私のホストサーバーを変更しますが、回答が必要です。 (更新:このコードはログオンするべきプロファイルである "html code"を持っています。プロファイルhtmlはPHPの後にあります。このphpには、ユーザとパスワードが正しいときでもdieメッセージを表示する問題があります。唯一の私はステップ、すべてずつステップによって一つ一つの変数1をエコーし​​ようとしたデータベースなしのphpログインフォーム


<?php 

function password($username='noneuser') { 

    $tegjitha=file_get_contents("pasetkkadmin.txt"); 
    $infot=preg_split('/'.PHP_EOL.'/',$tegjitha,-1,PREG_SPLIT_NO_EMPTY); 
    $final=null; 
    foreach ($infot as $info) { 
    $pos=preg_split('/:/',$info,-1,PREG_SPLIT_NO_EMPTY); 

    if ($pos[0]==$username){ 
     $final=$pos[1]; 
    } 

    } 
    return $final; 


} 


function isuser($input) { 
    $tegjitha=file_get_contents("pasetkkadmin.txt"); 
    $infot=preg_split('/'.PHP_EOL.'/',$tegjitha,-1,PREG_SPLIT_NO_EMPTY); 
    $rezultati=false; 
    foreach ($infot as $info) { 
    $pos=preg_split('/:/',$info,-1,PREG_SPLIT_NO_EMPTY); 
    if ($input==md5('albipatozi'.$pos[0])) { $rezultati=true;} 

    } 
    return $rezultati; 
} 


if (isset($_GET['dil']) ) { 
    setcookie('mbajmend','',time()-3600*24*365); 
    die('<meta http-equiv="REFRESH" content="0;url=index.php" />'); 

} 

if (isset($_POST['username']) && !empty($_POST['username'])) { 
    $username=$_POST['username']; 

} else {$username=null;} 

if (isset($_POST['pass']) && !empty($_POST['pass'])) { 
    $passwd=sha1('justastring£"'.$_POST['pass']); 


} else {$passwd='none';} 

if (isset($_POST['mbajmend']) && !empty($_POST['mbajmend'])) { 
    $koha=time()+3600*24*60; 
} else {$koha=null;} 

$duhet=password($username); 
if ($passwd==$duhet) { 


    setcookie('mbajmend',md5('sdaggs'.$username),$koha); 


} elseif (!(isset($_COOKIE['mbajmend']) && isuser($_COOKIE['mbajmend']) )) { 


    setcookie('mbajmend','',time()-3600*24*360); 
    if (isset($_SERVER['HTTP_REFERER']) &&  (preg_match('/[index.php]$/',$_SERVER['HTTP_REFERER']) ||  preg_match('/[admin\/]$/',$_SERVER['HTTP_REFERER']))) { $textshtes='Perdoruesi ose  Fjalkalimi jane Gabim ! '; } 
    else { $textshtes='Ju Lutem Vendosni Te Dhenat Thuaja'; } 

die('<body style="background:lightgrey;"> 
<div id="trupi" style="position:relative; background:#999999; margin:auto; width:360px;  margin-top:160px; height:260px;"> 
<form id="form1" name="form1" method="post" action="" style="position:absolute;  margin:56px; text-shadow:black; font-style:oblique; color:darkred"> 
    <label><strong>Perdoruesi:&nbsp;</strong> 
    <input type="text" name="username" /> 
    </label> 
    <p> 
    <label><strong>Fjalekalimi:</strong> 
    <input type="password" name="pass" /> 
    </label> 
    </p> 
    <p> 
    <label> 
    <input type="checkbox" name="checkbox" value="checkbox" /> 
    Me Mbaj Mend te Ky Kompjuter</label> 
    </p> 
    <p> 
    <label style="float:right;"> 
    <input type="submit" value="Identifikohu" /> 
    </label> 
    </p> 
    </form><p style="text-align:center; color:darkred; background:grey"> <b>'.$textshtes.'</b></p> 
</div> 
</body> 

    '); 

} 

?> 
<html> 
this should be shown when user and passord is correct :) 
</html> 

オンラインサーバー)でこの問題は、ファイルがあるTXT、それは

passdordsを仕事doesntの事実exept OKですpasetkkadmin.txt- そのモデルは

です

superadmin:

a3b22231bbe113a948a349af09cea4e4129584de最初の行は次のとおりです。superadminとそのパスワードは次のとおりです。そのデータwhithアルビ それが動作するはずですが、それはローカルあなたはWAMPを(それの窓)使用していますが、オンライン通常サーバー

+1

コードを変更することは非常に困難です。あなたはインデントについて知っていますか?物事をより読みやすくするために、コードのブロックをインデントすることができます。また、特定のエラーが発生しますか?デバッグを試みましたか? – Ryan

+0

はい私は作成しましたがエラーはありません。 (ところで、私のPC上のコードはブロックになっていますが、ここではコードに必要な4つのスペースを使用するようにはなっていませんのでコピーして貼り付けたときにちょっと台無しになりました) –

+0

"doesn ['] t do itsジョブ"; "doesn ['] t work" - 何が_specifically_働いていないのですか? (私達は尋ねるべきではありません!) – halfer

答えて

2

をdoesntのLinuxシステムで動作します。

違いは、PHP_EOLはWindows(CR + LF)とLinux(LF)では異なる値を持つため、pasetkkadmin.txtはWindowsで作成してアップロードするときにPHPコードで期待どおりに動作しませんそれはlinux-serverにあります。それはなりPHP_EOL([LF])によって分割さ、Linux上

array(0=>foo:bar, 
     1=>foo2:bar2) 

例は、それがあろうPHP_EOL([CR][LF])によって分割さ、Windows上

foo:bar[CR][LF] 
foo2:bar2 

をpasetkkadmin.txt

array(0=>foo:bar[CR], 
     1=>foo2:bar2) 
+0

のD niceアノテーションがコードパスワードから返された文字列はパスワードと同じであり、私のコードの問題はこの点に留まります:$ duhet = password($ username); if($ passwd == $ duhet){//クッキーを入れます}。 $ passwdでも$ duhetと同じですが、サーバはその文($ passwd == $ duhet)をtrueに戻しません!!あなたはこれを説明できますか?なぜなら、このコードでは本当に退屈だからです。 (それでOSの違いはありません) –

+0

wehe!あなたは正しいと思っています。私はそれをテストしました。私がしなければならなかったことは、何らかの方法でその文字列をトリムすることでした。感謝の気持ちが変わってきます。 –

関連する問題