2017-05-29 8 views
1

"成功/失敗"通知を自分のWebページに切り替えることを試みています。私はテストウェブサイトのいくつかの部分でこれを成功させましたが、私はログインページで少し問題に遭遇しています。これを行う私の元の方法は、大丈夫だが、私が探しているスタイルを提供していないアラートポップアップを使用しています。私はウェブサイトの他の部分で私のために働いていたテンプレートを使用することに決めましたが、ここではユーザーのために自分のセッションを確立するので、ログインはユニークです。ここでアラートからポップアップウィンドウに変更しようとしています

はここ

<?php 
session_start(); 
require_once '../php/connect.php'; 

if (isset($_POST['username']) and isset($_POST['password'])){ 

    $username = mysqli_real_escape_string($link, $_POST['username']); 
    $password = mysqli_real_escape_string($link, $_POST['password']); 

$result = mysqli_query($link, "SELECT * FROM planner WHERE username = '$username' and password = '$password'"); 
$count = mysqli_num_rows($result); 

if ($count !== 1){ 
    echo "<script> window.location.href='../default.html'; alert('Your credentials could not be validated!')</script>"; 
    } else { 
     $_SESSION['username'] = $username; 
    } 

if (isset($_SESSION['username'])){ 
    header("Location: ../php/main.php"); 
    } else { 
     echo "<script> window.location.href='../default.html'; alert('Your credentials could not be validated!')</script>"; 
    } 
} 
mysqli_close($link); 
?> 

は私が仕事に取得しようとしているコードですが、

を思いつく...意図したとおりに動作しますが、一般的な警告ウィンドウを使用して私の元のログインコードです解析エラー:構文エラー、予期しない行末のファイルの終わり.... ....これは私の?> PHPを終了する。

<?php 
session_start(); 
require_once '../php/connect.php'; 

if (isset($_POST['username']) and isset($_POST['password'])){ 

$username = mysqli_real_escape_string($link, $_POST['username']); 
$password = mysqli_real_escape_string($link, $_POST['password']); 

$result = mysqli_query($link, "SELECT * FROM planner WHERE username = '$username' and password = '$password'"); 
$count = mysqli_num_rows($result); 

if ($count !== 1){ 
echo "<script> 
var no = window.open('', 'failure','top=250,left=500,height=200,width=350,menubar=no,scrollbars=no,toolbar=no'); 
no.document.write('<body bgcolor='#EFEFEF'/>'); 
no.document.write('</br>'); 
no.document.write('<p style='text-align:center;color:white;background-color:red;font-family:Helvetica;font-size:20px'>Your credentials could not be verified</p></br>'); 
no.document.write('<div style='text-align:center'><button style='width:100px;border-style:solid;border-width:5px;border-color:#003399;position:absolute;left:35%;background-color:#003399;color:#ffcc00;font-weight:bold;font-family:Helvetica' value='Close' onclick='window.close()'>OK</button></div>'); 
window.location.href = '../default.html';</script>"; 
} else { 
    $_SESSION['username'] = $username; 
} 

if (isset($_SESSION['username'])){ 
header("Location: ../php/main.php"); 
} else { 
echo "<script> 
var no = window.open('', 'failure','top=250,left=500,height=200,width=350,menubar=no,scrollbars=no,toolbar=no'); 
no.document.write('<body bgcolor='#EFEFEF'/>'); 
no.document.write('</br>'); 
no.document.write('<p style='text-align:center;color:white;background-color:red;font-family:Helvetica;font-size:20px'>Your credentials could not be verified</p></br>'); 
no.document.write('<div style='text-align:center'><button style='width:100px;border-style:solid;border-width:5px;border-color:#003399;position:absolute;left:35%;background-color:#003399;color:#ffcc00;font-weight:bold;font-family:Helvetica' value='Close' onclick='window.close()'>OK</button></div>'); 
window.location.href = '../default.html';</script>"; 
} 

mysqli_close($link); 
?> 

私はこれが引用符と関連していることは確かですが、いくつかの組み合わせを試してみましたが、まだエラーが表示されます。

javacript内のif文、else文をすべて保持できると、window.openコードは他のページでもうまく機能します。これらのページでは、私はちょうどPHPタグを使用して、必要に応じてJavaScriptの外側のパラメータを取得します。

しかし、$ _Sessionでこれを実行しようとすると、動作しません。

これは引用符の問題であれば、誰かが正しい方向で私を指すことができれば感謝します。これはセッションに関連している場合、私はjavascriptの書式設定のヘルプを使用することができるので、私は?_Sessionを適切に呼び出します。

+0

らしいです – RST

+0

このエラーは、中括弧が欠落していることを意味し、中括弧を数えます。 –

+0

Do'h ....エラーメッセージを削除しました。今すぐ空のlogin.php画面が表示されます... – airider74

答えて

2

あなたのコードには多くの引用符の問題があります。スクリプトを別に置くか、heredoc、nowdocを使用してみてください。

PHPは、heredoc/nowdocを使用して複数の行を読み込むことができます。

デリミタとインデントを正しく使用し、実際のJSコードを間に入れることができます。 使用例ごとの例。

echo <<<SCRIPT 
<script> 
var no = window.open('', 'failure','top=250,left=500,height=200,width=350,menubar=no,scrollbars=no,toolbar=no'); 
no.document.write('<body bgcolor="#EFEFEF"/>'); 
no.document.write('</br>'); 
no.document.write('<p style="text-align:center;color:white;background-color:red;font-family:Helvetica;font-size:20px">Your credentials could not be verified</p></br>'); 
no.document.write('<div style="text-align:center"><button style="width:100px;border-style:solid;border-width:5px;border-color:#003399;position:absolute;left:35%;background-color:#003399;color:#ffcc00;font-weight:bold;font-family:Helvetica" value="Close" onclick="window.close()"">OK</button></div>'); 
window.location.href = '../default.html'; 
</script> 
SCRIPT; 

は、あなたが適切にエスケープせずの間に引用の同じ種類を使用することはできません覚えていますが、あなたはまた、単一またはその逆の間で倍増することができます。私はあなたの問題は、あなたがこのようにこの文字をエスケープする必要が

no.document.write('<p style='text-align:center;color:white;background-color:red;font-family:Helvetica;font-size:20px'>... 

「別の内側」を使用していると思う

+0

ええ、私はこれらの行に沿って考えていましたが、どこに行こうとしていたのですが、すべての行を整列させるためにコードを調整することができました... – airider74

+0

これはトリックでした....もう一度、助けてくれてありがとう。チャンピオンのように走っている。 – airider74

1

:あなたが最初の `if`ため}決算が欠落しているよう

no.document.write('<p style=\'text-align:center;color:white;background-color:red;font-family:Helvetica;font-size:20px\'>... 
+0

ありがとうJardel ...洞察力に感謝し、私の引用符を整列させ、文字の整列を整えるのを助ける... – airider74

+0

私はあなたを助けてくれてとても嬉しいです! –

関連する問題