By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,132 Members | 1,417 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,132 IT Pros & Developers. It's quick & easy.

How to include JavaScript into PHP to get 2 Variables ??? Need urgent help with that

P: 3
Short Description of the Project:

we developed a e-learning system for our students. each student has a unique username/password to view the modules he/she should view and nothing more. since we want to give them the opportunity to run these modules from home as well, we are trying to get the USERNAME/COMPUTERNAME as well, so the students, when they sign up for the modules, they can ONLY run the modules fromhome PC.

We found a nice JavaScript, that gives us opportunity to get these 2 values, but we are not able to retrieve these into PHP.

The JavaScript is as follow:
[code]
//~~Author~~. Curtis Riley
//~~Email_Address~~. curril@tristategt.org
//Gets the current user's name, domain, and PC name, then gets the global
//groups on the domain that the user is a member of, and then checks the
//local groups on the PC to see if the user is a member. All of the data is
//displayed as collected in an Internet Explorer window controled by the
//script.

//~~Script~~.
// WSH and ADSI demo program
// Gets global and local groups
// for the current user and machine
// and displays them in IE
// Requires: ADSI 2.5, WSH 2.0,
// Scripting 5.1, IE4
//Global ActiveX objects
//Creates an instance of IE
var ie = new ActiveXObject ("InternetExplorer.Application");

//Global variables
var gsUserName, gsUserDomain, gsComputerName;
var gaGlobalGroups = new Array();
var gaLocalGroups = new Array();
var gaMembershipFrom = new Array();

// Begin Main Program

BuildOutputWindow();
ShowStatus("Getting Information...");

gsUserName = Get_UserName();
gsUserDomain = Get_UserDomain();
gsComputerName = Get_ComputerName();
ShowUserData();

gaGlobalGroups = Get_UserGlobalGroups(gsUserName, gsUserDomain);
ShowGlobalGroupData(gaGlobalGroups);

gaLocalGroups = Get_UserLocalGroups(gsUserName, gsUserDomain, gsComputerName, gaGlobalGroups);
ShowLocalGroupData(gaLocalGroups);

ShowStatus("Group information retrieved.");

// End Main Program

// ADSI and WSH Functions

// Gets the PC Name from the WSH
function Get_ComputerName(){
ShowStatus("Getting Computer Name...");
var WshNetwork = new ActiveXObject ("WScript.Network");
return (WshNetwork.ComputerName);
}
// End function GetComputerName(){

// Gets the User Name from the WSH
function Get_UserName(){
ShowStatus("Getting User Name...");
var WshNetwork = new ActiveXObject ("WScript.Network");
return (WshNetwork.UserName);
}
// End function GetUserName(){

// Gets the Domain Name from the WSH
function Get_UserDomain(){
ShowStatus("Getting Domain Name...");
var WshNetwork = new ActiveXObject ("WScript.Network");
return (WshNetwork.UserDomain);
}
// End function Get_UserDomain(){

// Gets the global groups the user is a member of from ADSI
function Get_UserGlobalGroups(sUserName, sUserDomain){
ShowStatus("Getting User Global Group Membership...");
var oDomain; //Will hold the NT domain object
var eDomain; //an Enumerator that points to oDomain
var oGroup; //Will hold a group object
var i; //Counter variable

var VB_array; //a Dictionary object used to create a VBArray
var VBGroupFilter; //will hold the value "Group" in a VBArray

var aGroups = new Array(); //Holds the groups the user is a member of

// Create a VBarray to hold the filter value (yes, it is a kludge)
VB_array = new ActiveXObject("Scripting.Dictionary");
VB_array.add("Group", "");
VBGroupFilter = VB_array.Keys();

// Get the IADsContainer object for the domain
oDomain = GetObject("WinNT://" + sUserDomain);

//Filter the IADsContainer so that only objects that
//are groups show up when looking at it
oDomain.Filter = VBGroupFilter;

//Create an enumerator object so that we can step through all the groups
//in the domain
eDomain = new Enumerator(oDomain)

i = 0; //Initialize counter to step through array
for (;!eDomain.atEnd();eDomain.moveNext()){
//Since oDomain is filtered by group, each eDomain item is a group
oGroup = eDomain.item();
ShowStatus("Checking membership in group " + oGroup.Name + "....");
//Use the IsMember() method to find out if user is in the group

if ( oGroup.IsMember("WinNT://" + sUserDomain + "/" + sUserName) ){
//Store the group in the array, increment array counter
aGroups[i++] = oGroup;
//Show the groups as they come up
ShowGlobalGroupData(aGroups);
}
}
ShowStatus("Done getting global group membership");
return (aGroups);
}
// function Get_UserGlobalGroups(){

// Gets the local groups the user is a member of

function Get_UserLocalGroups(sUserName, sUserDomain, sComputerName, aGlobalGroups){
ShowStatus("Getting User Local Group Membership (may take a while)...");
var oDomain; //Will hold the NT local domain object
var eDomain; //an Enumerator that points to oDomain
var oGroup; //Will hold a group object
var i; //Counter variable

var VB_array; //a Dictionary object used to create a VBArray
var VBGroupFilter; //will hold the value "Group" in a VBArray

var aGroups = new Array(); //Holds the groups the user is a member of

// Create a VBarray to hold the filter value (yes, it is a kludge)
VB_array = new ActiveXObject("Scripting.Dictionary");
VB_array.add("Group", "");
VBGroupFilter = VB_array.Keys();

// Get the IADsContainer object for the computer
oDomain = GetObject("WinNT://" + sComputerName);

//Filter the IADsContainer so that only objects that
//are groups show up when looking at it
oDomain.Filter = VBGroupFilter;

//Create an enumerator object so that we can step through all the groups
//in the local domain
eDomain = new Enumerator(oDomain)

//Use a for loop to step through the enumerator and look at all the groups
i = 0; //Initialize counter to step through array
for (;!eDomain.atEnd();eDomain.moveNext()){
//Since oDomain is filtered by group, each eDomain item is a group
oGroup = eDomain.item();
ShowStatus("Checking membership in group " + oGroup.Name + "....");
//Use the IsMember() method to find out if user is in the group
if ( oGroup.IsMember("WinNT://" + sUserDomain + "/" + sUserName) ){
//Add a new property to indicate where the membership comes from
gaMembershipFrom[i] = sUserName;
//Store the group in the array, increment array counter
aGroups[i++] = oGroup;
//Show the groups as they come up
ShowLocalGroupData(aGroups);
}
//Now loop through all global groups that the user is a member of
//and check to see if those global groups belong to the local group
//Necessary since the .IsMember method doesn't check to see if a
//a user is in the global groups that are members of the local group
for (j =0; j < aGlobalGroups.length; j++){
ShowStatus("Checking membership in group " + oGroup.Name + "....");
if ( oGroup.IsMember("WinNT://" + sUserDomain + "/" + aGlobalGroups[j].Name) ){
//Now check against the last local group added to list to see if
//the user is already a member to prevent adding duplicate names
//since (i) was incremented, need to use (i-1) to get current group
if (aGroups[i-1].Name != oGroup.Name){
gaMembershipFrom[i] = aGlobalGroups[j].Name;
aGroups[i++] = oGroup;
} else {
//Add current global group name to the MembershipFrom list
gaMembershipFrom[i-1] += "<br>" + aGlobalGroups[j].Name;
}
ShowLocalGroupData(aGroups);
}
}
}
ShowStatus("Done getting local group membership");
return (aGroups);
} // End function Get_UserLocalGroups(){

// IE and display Functions

// Creates the IE window
// Require the object ie.
function BuildOutputWindow(){
var n = 0; //dummy variable while waiting for IE to start
var s = ""; //String that holds the HTML to build window

//Set window properties
ie.height = 480;
ie.width = 640;
ie.menubar = false;
ie.toolbar = false;
ie.statusbar = false;
ie.addressbar = false;
ie.resizable = true;
ie.navigate ("about:blank");

//Loop while IE is opening
while (ie.busy) {++n};

ie.document.body.innerHTML = "Building Document..." + "<br>load time= " + n;
ie.visible = true;

//Start building document. Each element is given an ID for DHTML use
//Single quotes are used to prevent having to escape double quotes
//Newlines are thrown in to make it easier to read if sent to a file

//The banner element
s += '<h3 id="Banner_id" onclick="tests()">Group Membership</h3>\n';

//The status element, not to be confused with the status bar
s += '<p id="Status_id">Building Document...</p>\n';

//The user data element (holds PC name, user name, domain)
s += '<p id="UserData_id">No user data</p>\n';

//The global groups element
s += '<p id="GlobalGroups_id">No global groups<p>\n';

//The local groups element
s += '<p id="LocalGroups_id">No local groups<p>\n';

//Show the HTML
ie.document.body.innerHTML = s;

}
//End function BuildOutputWindow(){

//Shows HTML text in IE window in element labeled "Status_id"
function ShowStatus(sCurrStatus){
ie.document.all.item("Status_id").innerHTML = sCurrStatus;
}
//End function ShowStatus("sCurrStatus")

Read this forum's guidelines and put you code between code, php or html tags,Read Posting Guidelines before you put code in forum!!! - Ronald
Nov 25 '06 #1
Share this Question
Share on Google+
3 Replies


P: 3
//Shows HTML text in IE window in element labeled "UserData_id"
function ShowUserData(){
var s = ""

//Puts it in a table
s += '<b>User Info</b> ';
s += '<table>\n';
s += '<tr><td width="33%" align=center><u>User Name</u></td>';
s += '<td width="33%" align=center><u>Domain Name</u></td>';
s += '<td align=center><u>Computer Name</u></td></tr>\n';
s += '<tr><td align=center>' + gsUserName + '</td>';
s += '<td align=center>' + gsUserDomain + '</td>';
s += '<td align=center>' + gsComputerName + '</td></tr>';
s += '</table>'
ie.document.all.item("UserData_id").innerHTML = s;
}
//End function ShowUserData()

//Shows HTML text in IE window in element labeled "GlobalGroupData_id"
function ShowGlobalGroupData(aGroups){
var s = ""; i = 0;

//Puts it in a table
s += '<b>Global Group Membership</b> ';
s += '<table cellspacing=10>\n'
s += '<tr><td width="25%"><u>Group Name</u></td>';
s += '<td><u>Description</u></td></tr>\n'
//Create each table row
for (i=0; i<aGroups.length; i++){
s += '<tr><td>' + aGroups[i].Name + '</td>';
s += '<td>' + aGroups[i].Description + '</td></tr>\n'
}
s += '</table>'
ie.document.all.item("GlobalGroups_id").innerHTML = s;
}
//End function ShowGlobalGroupData(){

//Shows HTML text in IE window in element labeled "LocalGroupData_id"
function ShowLocalGroupData(aGroups){
var s = ""; i = 0;

//Puts it in a table
s += '<b>Local Group Membership</b><br>';
s += '<table cellspacing=10>\n'
s += '<tr><td width="25%" valign=top><u>Group Name</u></td>';
s += '<td width="25%" valign=top><u>Gets Membership From</u></td>\n'
s += '<td valign=top><u>Description</u></td></tr>\n'
//Create each table row
for (i=0; i<aGroups.length; i++){
s += '<tr><td valign=top>' + aGroups[i].Name + '</td>';
s += '<td valign=top>' + gaMembershipFrom[i] + '</td>\n'
s += '<td valign=top>' + aGroups[i].Description + '</td></tr>\n'
}
s += '</table>'
ie.document.all.item("LocalGroups_id").innerHTML = s;
}
//End function ShowLocalGroupData(){
[/code]

If you run (save it as script.js or something else) the script, u get the desired information, the question ist how sould we place this script into a php page, to get these 2 values, when the student registers ??

If you refuse to following this forum's guidelines and put you code between code, php or html tags, I have to edit your posts. Read the Posting Guidelines before you put any ncode into this forum!!! - Ronald :cool:any help would be appreciated

Ioannis E. Ntentopoulos
Nov 25 '06 #2

Atli
Expert 5K+
P: 5,058
I didn't get through all that javascript.. sry.

But... If I understand your problem correctly (wich is higly unlikely ;P ) you need a way to get your data from the java to the php?

Assuming this and that your users would have to log in using a html form, I think I have an idea.

You could have your javascript put the data into hidden form thingies and pass it along with the login info.. like so

Expand|Select|Wrap|Line Numbers
  1. <script language="javascript">
  2. function setValue()
  3. {
  4.     // These vars you'd have to set
  5.     // using your javascript
  6.     var userName = "userName";
  7.     var compName = "compName";
  8.  
  9.     document.form1.hiddenUser.value = userName;
  10.     document.form1.hiddenComp.value = compName;
  11.  
  12.     document.form1.submit();
  13. }
  14. </script>
  15.  
  16. <form action="login.php" name="form1" method="post">
  17.     <input type="text" name="Username" />
  18.     <input type="text" name="Password" />
  19.     <input type="hidden" name="hiddenUser" />
  20.     <input type="hidden" name="hiddenComp" />
  21.  
  22.     <input type="button" value="What?" onClick="javascript:setValue()" />
  23. </form>
then all you'd have to do is maka a php to read the info and do whatever you want with it.

Hope this helps.
Nov 25 '06 #3

P: 3
@ Roland: sorry about that, thought i had the
Expand|Select|Wrap|Line Numbers
  1. ...
tag in my post

@ Atli: the whole code i posted gets (only in Internet Explorer) the (real) COMPUTERNAME and the (real) LOGGED-IN USER (localy)

so this js gives you 2 values, and my question was, how can I take these 2 values from the js script and put them into my php file where i do the check, if a user has enough privileges, to c the modules (privileges = COMPUTERNAME, LOGGED-IN USER and then username, password of the e-Learning System)
Nov 26 '06 #4

Post your reply

Sign in to post your reply or Sign up for a free account.