2014-10-30 84 views
-2

我做了一个网页,从一个字符串中获取他的数据从一个可视化的基本项目,并将其发送到MySQL。现在它已经运行他的PHP后关闭浏览器(Internet Explorer)。现在我找到了一种方法来关闭它,但没有“脚本试图关闭浏览器”Promt,但它太快并且数据永远不会到达数据库。我希望它等待(最好是直到PHP脚本完成,但如果不可能,那么几秒钟)使javascript等待php

这里是我的PHP:提前

<!DOCTYPE html> 
<html> 
<body> 

<?php 

//variabelen terughalen 
$user = $_GET['userw']; 
$ip = $_GET['ipw']; 
$pc = $_GET['laptopw']; 
$keuze = $_GET['keuzew']; 

echo "$user <br> $ip <br> $pc <br> $keuze <br>"; 

//Serverside info 
$servername = "172.17.80.153"; 
$username = "connect"; 
$password = "123456"; 
$dbname = "vbtest"; 

// Connectie maken 
$conn = new mysqli($servername, $username, $password, $dbname); 

// connectie testen 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connected successfully <br>"; 

//regels voor de lengte van variabelen 
if (strlen($user) <> 4) { echo "geen veranderingen toegestaan"; 
die ;} 
    if (strlen($ip) > 14) { echo "geen veranderingen toegestaan"; 
die ;} 
    if (strlen($keuze) > 3) { echo "geen veranderingen toegestaan"; 
die ;} 
    if (strlen($keuze) < 2) { echo "geen veranderingen toegestaan"; 
die ;} 

//Entry toevoegen aan de MySQL 
if ($keuze == 'ja') { 
$sql = ("INSERT INTO testtbl(Gebruikersnaam, Computernaam, Ipaddress, Keuze) VALUES('".$user."', '".$pc."', '".$ip."', '".$keuze."')"); 
} 
else 
{ 
$sql = ("INSERT INTO testntbl(Gebruikersnaam, Computernaam, Ipaddress, Keuze) VALUES('".$user."', '".$pc."', '".$ip."', '".$keuze."')"); 
$sql2 = ("INSERT INTO testtbl(Gebruikersnaam, Computernaam, Ipaddress, Keuze) VALUES('".$user."', '".$pc."', '".$ip."', '".$keuze."')"); 

if (mysqli_query($conn, $sql2)) { 
    echo "<br>New second record created successfully"; 
} else { 
    echo "Error: " . $sql2 . "<br>" . mysqli_error($conn); 
} 
} 

if (mysqli_query($conn, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 

?> 


<script type="text/javascript"> 
    window.open('javascript:window.open("", "_self", "");window.close();', '_self'); 
</script> 

</body> 
</html> 

感谢

+1

你在你的代码都SQL注入和XSS漏洞。 – Boann 2014-10-30 14:27:03

+0

一旦PHP完成,您将不得不返回客户端。 – 2014-10-30 14:27:05

+0

JavaScript已经“等待”了PHP,因为在上面的代码完成之前,PHP将不会回显JavaScript,因此不能成为数据库插入不起作用的原因。 – Boann 2014-10-30 14:30:38

回答

-1

PHP运行就像我们读文本文档一样,从左到右,从上到下。这意味着您的PHP脚本会在JavaScript重定向之前执行。您的PHP代码中可能存在错误,并且由于JavaScript重定向而无法看到它。把die();在php结束标记之前,修复php代码并移除die();

例子:

//this is a piece of your code 
if (mysqli_query($conn, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 
die(); //This is added to your code 
?> 


<script type="text/javascript"> 
    window.open('javascript:window.open("", "_self", "");window.close();', '_self'); 
</script> 

</body> 
</html> 
+0

,这与旧的情况下的相同字符串的数据在URL中填写变量? – 2014-10-30 14:52:51

+0

没有提到获取,更改ajax请求的帖子以获取并放入请求 – 2014-10-30 14:55:47

+0

的数据字符串,它为我做了,感谢您的帮助 – 2014-10-30 15:00:29