2012-10-16 2 views
0

그룹 채팅을 위해 직장에서 일부 사용자에게 오픈 소스 아약스 채팅 프로그램을 사용하고 있습니다. 프로그램은 제대로 작동하지만 사용자가 비밀번호 을 변경하거나 데이터베이스에서 직접하지 않고 사용자를 관리 할 수있는 방법으로 구축되지 않았습니다. 그래서이 PHP 스크립트를 조합했습니다. 데이터베이스의 데이터를 표시 할 수는 있지만 업데이트하지는 않습니다. MySQl과 Apache 서버에 Xampp을 사용하고 있습니다. 일단 IIS를 실행하고 실행하면 IIS로 이전 할 계획입니다. 여기 내 테이블의 레이아웃입니다.ajax 채팅을 위해 MySQl 데이터베이스를 업데이트하기위한 PHP

ID Username Password Role Channels EMail 

가끔 저장하기 위해 update 및 update_ac 스크립트 만 게시합니다. Windows 7을 서버로 사용하는 경우 업데이트를 제출 한 후 정의되지 않은 변수가 나타납니다. 여전히 업데이트 성공이라고 표시되지만 데이터베이스는 업데이트되지 않습니다. Windows XP에서는 서버로 정의되지 않은 변수 오류가 발생하지 않습니다. 일부 사람들이 나에게 잘못된 조언을하거나 나에게 다른 해결책을 가르쳐 주시면 감사하겠습니다. 여기

update.php 
// get value of id that sent from address bar 
$id=$_GET['id']; 

// Retrieve data from database 
$sql="SELECT * FROM $tbl_name WHERE id='$id'"; 
$result=mysql_query($sql); 

$rows=mysql_fetch_array($result); 
?> 

<table width="400" border="0" cellspacing="10" cellpadding="0"> 
<tr> 
<form name="form1" method="post" action="update_ac.php"> 
<td> 
<table width="100%" border="10" cellspacing="1" cellpadding="10"> 

<tr> 
<td colspan="3"><strong>Update User</strong> </td> 
</tr> 
<center> 
<tr> 
<td align="center"><strong>Username</strong></td> 
<td align="center"><strong>Password</strong></td> 
<td align="center"><strong>Role</strong></td> 
<td align="center"><strong>Channels</strong></td> 
<td align="center"><strong>EMail</strong></td> 
</tr> 
</center> 
<tr> 
<td align="center"> 
<input name="username" type="text" id="Username" value="<?php echo 
$rows['Username']; 
?>" size="15"> 
</td> 

<td align="center"> 
<input name="password" type="Password" id="Password" value="<?php echo  
$rows['Password']; ?>" size="15"> 
</td> 

<td> 
<input name="role" type="text" id="Role" value="<?php echo $rows['Role']; ?>" size="1"> 
</td> 

<td> 
<input name="channels" type="text" id="Channels" value="<?php echo $rows['Channels']; 
?>" size="10"> 
</td> 


<td> 
<input name="EMail" type="text" id="EMail" value="<?php echo $rows['EMail']; ?>" 
size="25"> 
</td> 

<tr> 
<td> 
<input name="id" type="hidden" id="ID" value="<?php echo $rows['ID']; ?>"> 
</td> 
<td align="center"> 
<input type="submit" name="Submit" value="Submit"> 
</td> 

</tr> 
update_ac.php 
// update data in mysql database 
$sql = "UPDATE $tbl_name SET Username='$Username', Password='$Password', Role='$Role', 
Channels='$Channels', EMail='$EMail' WHERE id='$id'"; 
$result = mysql_query($sql); 

// if successfully updated. 
if($result) 
{ 

echo "Successful"; 
echo "<BR>"; 
echo "<a href='index.php'>View result</a>"; 

} 

else 
{ 
echo "ERROR"; 
} 

?> 
+0

[SQL 주입 공격] (http://bobby-tables.com)에 취약합니다.이 코드 작업을 중단하고 공격을 방지하는 방법을 알아보십시오. –

답변

0

, 당신은 내가 게시 된 값을 얻을 수 $_POST를 사용하는 가정에서에서 게시 된 값을받지 못하고있다.

$Username = $_POST['Username']; 
$Password = $_POST['Password']; 
$Role  = $_POST['Role']; 
$Channels = $_POST['Channels']; 
$EMail  = $_POST['EMail']; 
$id  = $_POST['id']; 
+0

게시 된 값을 시도했습니다. 이미 그 일을하지 못했습니다 .SQ1 주사에 대해서만이 일이 있기 때문에 내 팀의 몇몇 사람들이 사용자를 업데이트하는 데 익숙해 져야합니다. 걱정할 필요가 없습니다. – fjwilson

+0

스크립트를 작동시킬 수 있었고 모든 도움에 감사드립니다. – fjwilson

0

을 folows로

// update data in mysql database 
$sql = "UPDATE $tbl_name SET Username='$Username', Password='$Password', Role='$Role', 
Channels='$Channels', EMail='$EMail' WHERE id='$id'"; 

그래서 내가 이름 = 비밀번호 변경 ""비밀번호하기 = 이름을 "내 스크립트를 고정 된 것을 발견 게시 된 값을 얻을 수 있습니다. 내가 같은 모든 작업을 수행했다 필드가 작동하지만 지금은 작동합니다.

관련 문제