Babak01
asked on
502 Bad Gateway error
Hello,
im using nginx at my server.
when a user visit this page , he seed two option :
1)Enter his mail and click the Validate button,
2) click on the "Facebook connect ", he gets redirected to a new page, then he sees "Please like our page in order to continue" with the like button underneath , and when he clicks on the like button =>(this part making the error) he should login using guest:guest in to my system and redirect me to the website i set in the code using this line:
I think i gets in a loop and then it giving me the error
502 Bad Gateway
nginx/1.1.19
here is de code:
the part that makes the error display is:
What this should do is : it should log me in to the my system using the $username = 'guest'; $password = 'guest';
When i use the code in a simple webpage like this its working:
in this page it works perfect and dont give any error.
im using nginx at my server.
when a user visit this page , he seed two option :
1)Enter his mail and click the Validate button,
2) click on the "Facebook connect ", he gets redirected to a new page, then he sees "Please like our page in order to continue" with the like button underneath , and when he clicks on the like button =>(this part making the error) he should login using guest:guest in to my system and redirect me to the website i set in the code using this line:
$userurl = 'http://www.mywebsite.com';
I think i gets in a loop and then it giving me the error
502 Bad Gateway
nginx/1.1.19
here is de code:
<?php
include_once('include/webzone.php');
include_once('include/presentation/header.php');
$email = $_GET['email'];
$force_connect = 1;
?>
<div class="container">
<br>
<?php
$f1 = new Fb_ypbox();
$user_data = $f1->getUserData();
$token = $f1->getAccessToken();
$url = 'https://graph.facebook.com/'.$user_data['id'].'/likes?access_token='.$token;
$data = $f1->getDataFromUrl($url);
$data = json_decode($data, true);
$data = $data['data'];
$liked = 0;
for($i=0; $i<count($data); $i++) {
if($GLOBALS['like_page_id']==$data[$i]['id']) $liked=1;
}
if(count($user_data)>0) {
$force_connect=0;
$users = get_users(array('fb_user_id'=>$user_data['id']));
if(count($users)>0) {
if($users[0]['fb_token_expires']!=0 && time()>$users[0]['fb_token_expires']) {
$force_connect=1;
}
}
else {
$force_connect=1;
}
}
if($email!='') $force_connect=0;
echo '<div id="locked_content">';
if($force_connect==1) {
echo '<h1>Start here !</h1>';
echo '<form>';
echo 'Email:<br><input type="text" id="email" name="email" style="width:240px;"><br>';
echo '<input type="submit" value="Validate">';
echo '</form>';
echo '<br><a href="./account/fb_connect.php" style="font-size:20px;">Facebook connect</a>';
}
else {
if(($liked && count($user_data)>0) || $email!='') {
if($email!='') {
$user = get_users(array('email'=>$email));
if(count($user)==0) {
$m1 = new MySqlTable();
$sql = 'INSERT INTO '.$GLOBALS['db_table']['users'].' (fb_email, created) VALUES ("'.$email.'", "'.date('Y-m-d H:i:s').'")';
$m1->executeQuery($sql);
}
}
//function after like button is hit
$result = get_settings();
for($i=0; $i<count($result); $i++) {
$settings[$result[$i]['meta_key']] = $result[$i]['meta_value'];
}
$challenge = $_REQUEST['challenge'];
$userurl = $_REQUEST['userurl'];
$res = $_REQUEST['res'];
$qs = $_SERVER["QUERY_STRING"];
$uamip = $_REQUEST['uamip'];
$uamport = $_REQUEST['uamport'];
$mac_address = $_REQUEST['mac'];
//--There is a bug that keeps the logout in a loop if userurl is http%3a%2f%2f1.0.0.0 ---/
//--We need to remove this and replace it with something we want
if (preg_match("/1\.0\.0\.0/i", $userurl)) {
$default_site = 'google.com';
$pattern = "/1\.0\.0\.0/i";
$userurl = preg_replace($pattern, $default_site, $userurl);
}
//---------------------------------------------------------
if($res == 'success'){
header("Location: $userurl");
exit();
//print("\n</html>");
}
if($res == 'failed'){
header("Location: /hotspot/fail.php?".$qs);
exit();
//print("\n</html>");
}
if($res == 'notyet'){
$uamsecret = 'greatsecret';
$dir = '/logon';
$userurl = 'http://www.mywebsite.com';
$redir = urlencode($userurl);
// Just use a user created for guest usage, e.g username: guest, password: guest
$username = 'guest';
$password = 'guest';
$enc_pwd = return_new_pwd($password,$challenge,$uamsecret);
$target = "http://$uamip".':'.$uamport.$dir."?username=$username&password=$enc_pwd&userurl=$redir";
header("Location: $target");
exit();
//print("\n</html>");
$res = 'success';
} else {
header("Location: index.php?".$qs);
exit();
//print("\n</html>");
}
}
else {
echo '<div id="like_section">';
echo '<h2>Please like our page in order to continue</h2>';
echo '<fb:like href="'.$GLOBALS['like_page_url'].'" width="450" show_faces="true" send="false"></fb:like>';
echo '</div>';
}
}
echo '</div>';
function return_new_pwd($pwd,$challenge,$uamsecret){
$hex_chal = pack('H32', $challenge); //Hex the challenge
$newchal = pack('H*', md5($hex_chal.$uamsecret)); //Add it to with $uamsecret (shared between chilli an this script)
$response = md5("\0" . $pwd . $newchal); //md5 the lot
$newpwd = pack('a32', $pwd); //pack again
$password = implode ('', unpack('H32', ($newpwd ^ $newchal))); //unpack again
return $password;
}
?>
</div>
<?php
include_once('include/presentation/footer.php');
?>
the part that makes the error display is:
$challenge = $_REQUEST['challenge'];
$userurl = $_REQUEST['userurl'];
$res = $_REQUEST['res'];
$qs = $_SERVER["QUERY_STRING"];
$uamip = $_REQUEST['uamip'];
$uamport = $_REQUEST['uamport'];
$mac_address = $_REQUEST['mac'];
//--There is a bug that keeps the logout in a loop if userurl is http%3a%2f%2f1.0.0.0 ---/
//--We need to remove this and replace it with something we want
if (preg_match("/1\.0\.0\.0/i", $userurl)) {
$default_site = 'google.com';
$pattern = "/1\.0\.0\.0/i";
$userurl = preg_replace($pattern, $default_site, $userurl);
}
//---------------------------------------------------------
if($res == 'success'){
header("Location: $userurl");
exit();
//print("\n</html>");
}
if($res == 'failed'){
header("Location: /hotspot/fail.php?".$qs);
exit();
//print("\n</html>");
}
if($res == 'notyet'){
$uamsecret = 'greatsecret';
$dir = '/logon';
$userurl = 'http://www.mywebsite.com';
$redir = urlencode($userurl);
// Just use a user created for guest usage, e.g username: guest, password: guest
$username = 'guest';
$password = 'guest';
$enc_pwd = return_new_pwd($password,$challenge,$uamsecret);
$target = "http://$uamip".':'.$uamport.$dir."?username=$username&password=$enc_pwd&userurl=$redir";
header("Location: $target");
exit();
//print("\n</html>");
$res = 'success';
} else {
header("Location: index.php?".$qs);
exit();
//print("\n</html>");
}
What this should do is : it should log me in to the my system using the $username = 'guest'; $password = 'guest';
When i use the code in a simple webpage like this its working:
<?php
include('db.php');
$challenge = $_REQUEST['challenge'];
$userurl = $_REQUEST['userurl'];
$res = $_REQUEST['res'];
$qs = $_SERVER["QUERY_STRING"];
$uamip = $_REQUEST['uamip'];
$uamport = $_REQUEST['uamport'];
$mac_address = $_REQUEST['mac'];
//--There is a bug that keeps the logout in a loop if userurl is http%3a%2f%2f1.0.0.0 ---/
//--We need to remove this and replace it with something we want
if (preg_match("/1\.0\.0\.0/i", $userurl)) {
$default_site = 'google.com';
$pattern = "/1\.0\.0\.0/i";
$userurl = preg_replace($pattern, $default_site, $userurl);
}
//---------------------------------------------------------
if($res == 'success'){
header("Location: $userurl");
print("\n</html>");
}
if($res == 'failed'){
header("Location: /hotspot/fail.php?".$qs);
print("\n</html>");
}
if($res == 'notyet'){
// Validate Form and login User
if(isset($_POST['submit'])){
$email = trim($_POST['email']);
$agree = $_POST['agree'];
$validate_email = filter_var($email, FILTER_VALIDATE_EMAIL);
// var_dump($agree);
// exit();
if($validate_email !== false && $agree == 1){
$access_date = date('Y-m-d H:i:s');
$q = mysql_query("INSERT INTO promo_users VALUES (NULL, '$email', '$mac_address', '$access_date')");
if($q){
$uamsecret = 'greatsecret';
$dir = '/logon';
$userurl = 'http://www.mywebsite.com';
$redir = urlencode($userurl);
// Just use a user created for guest usage, e.g username: guest, password: guest
$username = 'guest';
$password = 'guest';
$enc_pwd = return_new_pwd($password,$challenge,$uamsecret);
$target = "http://$uamip".':'.$uamport.$dir."?username=$username&password=$enc_pwd&userurl=$redir";
header("Location: $target");
print("\n</html>");
} else {
header("Location: index.php?".$qs);
print("\n</html>");
}
} else {
header("Location: index.php?".$qs);
print("\n</html>");
}
}
}
//Function to do the encryption thing of the password
function return_new_pwd($pwd,$challenge,$uamsecret){
$hex_chal = pack('H32', $challenge); //Hex the challenge
$newchal = pack('H*', md5($hex_chal.$uamsecret)); //Add it to with $uamsecret (shared between chilli an this script)
$response = md5("\0" . $pwd . $newchal); //md5 the lot
$newpwd = pack('a32', $pwd); //pack again
$password = implode ('', unpack('H32', ($newpwd ^ $newchal))); //unpack again
return $password;
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Demo Promo</title>
</head>
<body>
<form action="" method="post">
<h4>Enter your email address below to redeem access!</h4>
<p>
<label>Email Address:</label>
<input type="text" name="email">
<p>
<p>
<input type="checkbox" name="agree" value="1">
<label>I have read and I agree with your <a href="terms.php">terms and conditions</a>, take me to the internet!</label>
</p>
<p>
<input type="submit" name="submit" value="Redeem Access">
</p>
</form>
</body>
</html>
in this page it works perfect and dont give any error.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Right it is a down stream error your server is reporting an error trying to do the external connect.
Cd&
Cd&
ASKER