Skip to content

Commit

Permalink
login and new user refactored to server side
Browse files Browse the repository at this point in the history
  • Loading branch information
samshiffman321 committed Apr 30, 2016
1 parent 93c05e0 commit fd209dc
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 29 deletions.
51 changes: 51 additions & 0 deletions addUser.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

$q = $_GET["q"];
$arr = array();
$arr = explode(',', $q);
$username = $arr[0];
$password = $arr[1];
$serv = '/home/spring2014/sas5057/public_html/344NewsProject';
$url = $serv . '/users.json';
if (!is_writable($url)) { // Test if the file is writable
echo "Cannot write to " . $url;
echo false;
} else {
$current = file_get_contents($url);

if ($current == "null"){
$write = array(array("username"=>$username, "password"=>$password));
$final = json_encode($write, true);
$res = file_put_contents($url, $final);
echo true;
exit();
}


$json = json_decode($current, true);
$write = array();
if ($json != "null"){
$i = 0;
foreach($json as $item) {
if (in_array( $username,array_values($item))){
echo false;
die();
}
$write[$i] = $item;
$i++;
}
$vals = array_values($json);
$vals = array_values($vals);
if (!in_array($username, $vals)) $write[$i] = array("username"=>$username, "password"=>$password);
$final = json_encode($write, true);
$res = file_put_contents($url, $final);
echo true;

} else {
$write = array(array("username"=>$username, "password"=>$password));
$final = json_encode($write, true);
$res = file_put_contents($url, $final);
echo true;
}
}
?>
98 changes: 77 additions & 21 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<form id="hidden" hidden="true">
<input type="text" id="loggedInHidden" hidden="true" value="">
<input type="text" id="userHidden" value="" hidden="true">
<input type="text" id="userHidden" hidden="true" value="">

</form>
<div class="row">
Expand All @@ -24,15 +24,14 @@
<input type="checkbox" class="checkbox" name="check_list[]" value="http://rss.cnn.com/rss/cnn_topstories.rss"><label>CNN</label><br/>
<input type="checkbox" class="checkbox" name="check_list[]" value="http://www.wired.co.uk/news/rss"><label>WIRED</label><br/>
</form>
<form id="login" onsubmit="javascript:login(); return false;">
<form id="login" onsubmit="javascript:login(); return false;" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<label>Username: </label><input type="text" id="username" name="username"></br>
<label>Password: </label><input type="password" id="password" name="password"></br>
<input type="submit" value="Login" name="Login">
</form>
<form id="newUser" onsubmit="javascript:newUser(); return false;">
<label>Username: </label><input type="text" id="username" name="username"></br>
<label>Password: </label><input type="password" id="password" name="password"></br>
<label>Retype Password: </label><input type="password" id="passwordConfirm" name="passwordConfirm"></br>
<form id="newUser" onsubmit="javascript:newUser(); return false;" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<label>Username: </label><input type="text" id="newusername" name="username"></br>
<label>Password: </label><input type="password" id="newpassword" name="password"></br>
<input type="submit" value="Create" name="Create">
</form>
<div id="loginOutput">
Expand Down Expand Up @@ -122,48 +121,105 @@ function addFavorite(e) {

function login(){
console.log("attempting login");
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var uname = document.getElementById("username").value;
var pword = document.getElementById("password").value;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {

if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var xml = xmlhttp.responseXML;
var usernames = xml.getElementsByTagName("username");
var passwords = xml.getElementsByTagName("password");
for (var i = 0; i < usernames.length; i++){
var uname = usernames[i].innerHTML;
var pword = passwords[i].innerHTML;
if (uname == username && pword == password){
var username = document.getElementById("username").value;
console.log(xmlhttp.responseText);
if(xmlhttp.responseText == 1){

document.getElementById("username").value = "";
document.getElementById("password").value = "";
document.getElementById("password").blur();
document.getElementById("loginOutput").innerHTML = "Last Login was: " + document.cookie.split("=")[1];
var cookie = document.cookie.split(";");
console.log(cookie);
var lastLogin = "";
var str = cookie.forEach(function(data){
if (data.includes(username)) {
lastLogin = data.split("=")[1];
}
});
console.log(lastLogin);
document.getElementById("loginOutput").innerHTML = "Last Login was: " + lastLogin;

document.getElementById("loggedInHidden").value = "true";
document.getElementById("userHidden").value = uname;
document.getElementById("userHidden").value = username;

var d = new Date();
if (document.cookie.length > 0 ){
document.cookie = username + "=" + d.toUTCString();
document.cookie = username + "=" + d.toUTCString() + "=";
} else {
document.cookie = username + "=" + d.toUTCString();
}
return true;
}

} else {
document.getElementById("loginOutput").innerHTML = "Login Failed";

}
}
};
xmlhttp.open("GET","./users.xml",true);

var str = uname + "," + pword;
var url = "http://www.se.rit.edu/~sas5057/344NewsProject/login.php?q=" + str;
xmlhttp.open("GET",url,true);
xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xmlhttp.send();
}

function checkUsername(username, check) {
return username.includes(check);
}

function newUser() {
console.log("attempting new user");
var username = document.getElementById("newusername").value;
var password = document.getElementById("newpassword").value;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
console.log(xmlhttp.responseText);
if(xmlhttp.responseText == 1){

document.getElementById("newusername").value = "";
document.getElementById("newpassword").value = "";
document.getElementById("newpassword").blur();
document.getElementById("loginOutput").innerHTML = "User Created, please log in above to favorite articles";

var d = new Date();
if (document.cookie.length > 0 ){
document.cookie = username + "=" + d.toUTCString();
} else {
document.cookie = username + "=" + d.toUTCString();
}

} else {
document.getElementById("loginOutput").innerHTML = "Create user Failed";

}
}
}


var uname = document.getElementById("newusername").value;
var pword = document.getElementById("newpassword").value;
var str = uname + "," + pword;
var url = "http://www.se.rit.edu/~sas5057/344NewsProject/addUser.php?q=" + str;
xmlhttp.open("GET",url,true);
xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xmlhttp.send();
}


Expand Down
32 changes: 32 additions & 0 deletions login.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

$q = $_GET["q"];
$arr = array();
$arr = explode(',', $q);
$username = $arr[0];
$password = $arr[1];
$serv = '/home/spring2014/sas5057/public_html/344NewsProject';
$url = $serv . '/users.json';
if (!is_writable($url)) { // Test if the file is writable
echo "Cannot read from " . $url;
echo false;
} else {
$current = file_get_contents($url);

if ($current == "null"){
echo false;
}


$json = json_decode($current, true);
if ($json != "null"){
foreach($json as $item) {
if ($item['username'] == $username && $item['password'] == $password){
echo true;
}
}
} else {
echo false;
}
}
?>
1 change: 1 addition & 0 deletions users.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"username":"sas5057","password":"123"}]
8 changes: 0 additions & 8 deletions users.xml

This file was deleted.

0 comments on commit fd209dc

Please sign in to comment.