2013-02-10 2 views
0

У меня есть XML (mydata.xml) файл, который хранит войти в детали следующимXML Войти сценарий и сессии в PHP

<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?> 
<MYData> 
    <login_details> 
     <unique_ref>1-61</unique_ref> 
    <login_name>tomme</login_name> 
     <login>me</login> 
     <password>me</password> 
     <file1>Test</file1> 
     <file2/> 
     <file3/> 
     <file4/> 
    </login_details> 
    <login_details> 
     <unique_ref>1-61</unique_ref> 
    <login_name>tony</login_name> 
     <login>tony</login> 
     <password>tony</password> 
     <file1>Test1</file1> 
     <file2/> 
     <file3/> 
     <file4/> 
    </login_details> 
</MYData> 

У меня есть файл входа в систему, чтобы ввести детали

<html> 
<head> 
<title>Administrator Login Page</title> 
<style type="text/css"> 
@import "style.css"; 
</style> 
</head> 
<body> 
<h1>Administrator Login Page</h1> 
</br></br></br></br></br></br></br> 
<form action="admin_verify.php" method="post"> 
User Name: <input type="text" name="admin_name" /> 
</br></br> 
Password:&nbsp;&nbsp; <input type="password" name="admin_password" /> 
</br></br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<input type="submit" value="Login"/> 
<input type="reset" value="Reset"/> 
</form> 
</body> 
</html> 

I есть также admin_verify файлу

<?php 
    session_start(); 
    $mydata = simplexml_load_file("xml/mydata.xml"); 

    $login = ""; 
    $password = ""; 
    $loginname = ""; 

    for($i = 0; $i < count($mydata); $i++){ 

     $login = $mydata->login_details[$i]->login; 
     $password = $mydata->login_details[$i]->password; 
     $loginname = $mydata->login_details[$i]->login_name; 


    if(empty($_POST["admin_name"])) 
    { 
     header("Location:login.php"); 
     return false; 
    } 

    if(empty($_POST["admin_password"])) 
    { 
     $this->HandleError("Password is empty!"); 
     return false; 
    } 

     if(($_POST["admin_name"] == $login) && ($_POST["admin_password"] == $password)){ 
      $_SESSION['name'] = "$loginname"; 
      header("Location:admin_panel.php"); 
     } 
    } 

    //as we have exited for loop (and therefore not been directed) we have a invalid login 
    echo "invalid username or password"; 
?> 

проблема с сессиями в admin_panel, потому что я пытаюсь получить $ LOGINNAME сюда m файл xml до файла admin_verify, который он передает «tomme», но файл admin_panel - это то место, где я потерялся. Я также tring, чтобы передать детали «tomme» в xml-файле, чтобы отобразить содержимое файла1 любые идеи о том, как добиться это если я жесткий код $ LoginName админу на всей странице сессии, то он работает нормально, но я хотел бы передать информацию динамически admin_panel выглядит следующим образом

<html> 
<head> 
<title>Administrator Panel</title> 
<style type="text/css"> 
@import "style.css"; 
</style> 
</head> 
<body> 
<h1>Administrator Panel</h1> 
<?php 
session_start(); 
$mydata = simplexml_load_file("xml/mydata.xml"); 

    for ($i=0; $i < count($mydata);++$i) 
    $loginname = $mydata->login_details[$i]->login_name; 

if($_SESSION['name']=="$loginname") 
{ 
echo "Welcome ".$_SESSION['name']; 
echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"; 
echo "<a href='logout.php'>Logout</a>"; 
} 
else 
{ 
header("Location:login.php"); 
} 
echo "&nbsp;&nbsp;&nbsp;"; 

echo "</br></br></br>"; 

?> 
</body> 
</html> 

любая помощь будет appritiated

+0

Я забыл добавить код admin_panel – user2033464

+0

Пожалуйста, возьмите код (и вопрос) в более подходящую форму для вопроса программирования. Сократите проблему до выдержки, которая является хорошим примером и ссылкой для большего количества людей, чем только вы в этом месте вовремя. – hakre

+0

Могу ли я узнать, что такое login_details в вашем php (admin_verify) коде? – Illaya

ответ

1

во-первых его не рекомендуется хранить пароли обычного текста в любом файле независимо. anyways

Вы можете json_encode объект simpleXML и вставить его в свой сеанс, а затем передать значения панели администратора.

проверить изменения всех 3 файлов, надеюсь, что это поможет.

Логин:

<?php session_start(); 
//already logged in 
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true){ 
    exit(header("Location: ./admin_panel.php")); 
} 
?> 
<html> 
<head> 
<title>Administrator Login Page</title> 
<style type="text/css"> 
@import "style.css"; 
</style> 
</head> 
<body> 
<h1>Administrator Login Page</h1> 

<?php echo (isset($_SESSION['error'])?'<span style="color:red">'.$_SESSION['error'].'</span>':null);?> 
<div> 
    <form action="admin_verify.php" method="post"> 
     <label for="admin_name">User Name:</label> <input type="text" name="admin_name" /> 
     </br> 
     <label for="admin_password">Password:</label> <input type="password" name="admin_password" /> 
     </br> 
     <input style="margin-left:30px" type="submit" value="Login"/> 
     <input type="reset" value="Reset"/> 
    </form> 
</div> 

</body> 
</html> 
<?php 
//unset error as its only required once 
unset($_SESSION['error']); 
?> 

admin_veryify

<?php 
session_start(); 
$mydata = simplexml_load_file("mydata.xml"); 

$login = ""; 
$password = ""; 
$loginname = ""; 

for($i = 0; $i < count($mydata); $i++){ 

    $login = $mydata->login_details[$i]->login; 
    $password = $mydata->login_details[$i]->password; 
    $loginname = $mydata->login_details[$i]->login_name; 


    if(empty($_POST["admin_name"]) || empty($_POST["admin_password"])) 
    { 
     $_SESSION['error']='Please fill in both username and password'; 
     exit(header("Location:login.php")); 
    } 


    if(($_POST["admin_name"] == $login) && ($_POST["admin_password"] == $password)){ 
     //set logged in 
     $_SESSION['logged_in'] = true; 
     //unset password no need to include that 
     unset($mydata->login_details[$i]->password); 

     //json encode the user stuff from the xml 
     $_SESSION['user_details'] = json_encode($mydata->login_details[$i]); 

     //goto admin 
     exit(header("Location: ./admin_panel.php")); 
    } 
} 

//as we have exited for loop (and therefore not been directed) we have a invalid login 
$_SESSION['error']='Invalid username or password'; 
exit(header("Location:login.php")); 
?> 

админка

<?php 
session_start(); 
//logout 
if(isset($_GET['logout'])){unset($_SESSION['logged_in']);session_destroy();} 


//check login 
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true){ 
    //json decode user details from session into an array 
    $user_details = json_decode($_SESSION['user_details'],true); 

    //debug your values 
    echo '<pre>'.print_r($user_details,true).'</pre>'; 
    /* 
    Array 
    (
     [unique_ref] => 1-61 
     [login_name] => tomme 
     [login] => me 
     [file1] => Test 
     [file2] => Array 
      (
      ) 

     [file3] => Array 
      (
      ) 

     [file4] => Array 
      (
      ) 

    ) 
    */ 

    echo '<a href="?logout">logout</a>'; 
}else{ 
    exit(header("Location: ./login.php")); 
} 
?> 
+0

спасибо, Лоуренс, похоже, что-то, с чем я могу работать. Я рассмотрю код json_encode, поскольку я все еще относительный новичок в php, а xml - это мое поле, я надеюсь, что информация, которую я нашел в php и xml-скрипте для входа в систему, будет помощи другим, пытающимся изучить эти две темы. – user2033464

+0

Могу я узнать, что такое login_details в вашем коде php (admin_verify)? – Illaya

+0

@Illaya посмотрите на XML OP (mydata.xml), там вы увидите структуру 'login_details'. Он просто анализируется на ** объект **, когда вызывается 'simplexml_load_file (« mydata.xml »). –

Смежные вопросы