Skrevet tir. d. 04. oktober 2005 kl. 19:02:24| #1
Øhh - er det ikke nærmere et database spørgsmål? Jeg er ikke sikker på at jeg ved hvad du mener med dit spørgsmål!
Skrevet tir. d. 04. oktober 2005 kl. 19:04:32| #2
ser det ikke som et database spørgsmål måske kunne i hjælpe mig der =)
glemte at nævne at det er en mysql database..
men der hvor jeg har problemer er at hvordan jeg skal få vist brugerne og kunne ændre dem enkeltvis
Skrevet tir. d. 04. oktober 2005 kl. 19:06:33| #3
Jamen har du fået forbundet til mysql-databasen via php så?
Skrevet tir. d. 04. oktober 2005 kl. 19:07:05| #4
Skrevet tir. d. 04. oktober 2005 kl. 19:09:24| #5
Jamen du kan jo bare bruger deres brugernavn - men husk at det skal være unik. Altså "update address=?,navn=? where brugernavn=? in usertable"
execute($addres,$navn,$brugernavn);
Skrevet tir. d. 04. oktober 2005 kl. 19:10:09| #6
kan du logge ind i databasen?
Skrevet tir. d. 04. oktober 2005 kl. 19:11:18| #7
jeg kan godt logge ind i databasen
hum dit eksempel siger mig nada :p er slet ikke så god til php endnu =)
Skrevet tir. d. 04. oktober 2005 kl. 19:12:37| #8
okay - vi tager det stille og roligt:-) Prøv at logge in i databasen. Så skriver du "use databasensnavn" - så vil der stå "database seleteced"
Er du med så langt?
Skrevet tir. d. 04. oktober 2005 kl. 19:17:34| #9
Så kan du skrive "show fields from tabelensnavn;"
Skrevet tir. d. 04. oktober 2005 kl. 19:18:45| #10
øhm jeg går ind i min phpmyadmin =)?
Skrevet tir. d. 04. oktober 2005 kl. 19:19:06| #11
Vi skal jo først have fundet ud af hvilke rækker dine tabel indeholder inden vi kan udskrive dem - det kan alternativt også bare gøres ved at skrive "SELECT * FROM tabel" - men det er MEGET dårligt praksis!!
Skrevet tir. d. 04. oktober 2005 kl. 19:20:05| #12
Har du prøvet at arbejde med databaser før?
Skrevet tir. d. 04. oktober 2005 kl. 19:23:44| #13
ja har jeg skam..
men de tabeller vi skal arbejde med
hedder
user <-- brugeren og hvis der er en bruger skal slettes skal alt data fra den brugere slettes
active <-- Den skal sættes til "yes" hvis man har valgt aktiver og "no" hvis man ha valgt un-aktiver
forstod jeg dig rigtigt ;P?
Skrevet tir. d. 04. oktober 2005 kl. 19:24:18| #14
arg stener tabellen hedder users og det er bare to rækker =)
Skrevet tir. d. 04. oktober 2005 kl. 19:24:44| #15
Kodet i hodet - men det er nok i den retning :-)
<?
$sAction = $_GET['action'];
switch( $sAction ){
case "delete" ){
$query = mysql_query("DELETE FROM myUsers WHERE id=".$_GET['id']) or die(mysql_error());
case "edit":
editUser();
break;
case "save":
$query = mysql_query("UPDATE myUsers SET user_name ='".$_POST['user_name']."' WHERE id=".$_POST['id']) or die(mysql_error());
default:
showUser();
break;
}
}
function showUser(){
$query = mysql_query("SELECT * FROM myUsers") or die(mysql_error());
if(mysql_num_rows($query) < 1){
print "Der er ikke oprettet nogle brugere...";
} else {?>
<table>
<tr>
<th>Id</th>
<th>Brugernavn</th>
<th>Handling</th>
</tr>
<?
while ($row = mysql_fetch_array($query)) {
$user_id = $row["id"];
$user_name = $row["user_name"];
?>
<tr>
<th><?=$user_id?></th>
<td><?=$user_name?></td>
<td>
[ <a href="user.php?action=edit&id=<?=$user_id?>">Redigér</a> ]
[ <a href="user.php?action=delete&diary_id=<?=$diary_id?>">Slet</a> ]
</td>
</tr>
<? }?>
</table>
<?}?>
function editUser(){
$query = mysql_query("SELECT * FROM myUsers WHERE id=".$_GET['id']) or die(mysql_error());
$row = mysql_fetch_array($query));
$user_id = $row["id"];
$user_name = $row["user_name"];?>
<form action="user.php?action=save" method="post">
Brugernavn <input type="text" name="user_name" value="<?=$user_name?>">
<input type="submit" value="gem">
</form>
<?
}
?>
Skrevet tir. d. 04. oktober 2005 kl. 19:26:55| #16
vil det sige at user og active er felter i en tabel - eller er user og active to selvstædige tabler?
Skrevet tir. d. 04. oktober 2005 kl. 19:28:07| #17
users er en tabel
og i den tabel
skal jeg redigere eller slette via
disse to rækker
user og active
Skrevet tir. d. 04. oktober 2005 kl. 19:28:47| #18
Ahh - det hjælper meget mere det her:-) Du har jo en id på alle dine bruger kan jeg se - hvis det ellers er noget kode du har brugt før??
Skrevet tir. d. 04. oktober 2005 kl. 19:30:03| #19
yep har et id på alle brugere =)
og er ikke kommet så langt med mit projekt at jeg har brugt det andre steder =)
Skrevet tir. d. 04. oktober 2005 kl. 19:30:11| #20
okay - det er lige med at forstå hinanden ret:-)
Skrevet tir. d. 04. oktober 2005 kl. 19:37:06| #21
Okay - for at være ærlig, så ligner det kode du har skrevet "jeg ved ikke hvad":-) Jeg synes ligeså godt du kan starte med at få det organiseret til at starte med. Jeg har noget som jeg har brugt til et administratormodul - og det må du gerne få. Men du bliver nok nød til selv at rette det til!
Skrevet tir. d. 04. oktober 2005 kl. 19:37:22| #22
Jeg lister nogle filer herunder okay?
Skrevet tir. d. 04. oktober 2005 kl. 19:38:02| #23
delete.php
<?php
include_once "class.ftp.php";
if(isset($_REQUEST['submit']))
{
echo $ftp->deleteUser($_REQUEST['id'],$_REQUEST['files']);
}
else
{
echo $ftp->showDeleteUser($_REQUEST['id']);
}
include_once "bottom_admin.php";
?>
Skrevet tir. d. 04. oktober 2005 kl. 19:39:09| #24
edit.php:
<?php
include_once "class.ftp.php";
if(isset($_REQUEST['id']))
{
$id = $_REQUEST['id'];
}
else
{
$id = -1;
}
if(isset($_REQUEST['submit']))
{
if($id == -1)
{
$data = array($_REQUEST['name'],$_REQUEST['password'],$_REQUEST['homedir'],$_REQUEST['shell'],$_REQUEST['Uid'],$_REQUEST['Gid'],$_REQUEST['active']);
//userid,passwd,homedir,shell,uid,gid,LoginAllowed
echo $ftp->createUser($data);
mkdir($_REQUEST['homedir']);
chmod($_REQUEST['homedir'],777);
}
else
{
$data = array($_REQUEST['name'],$_REQUEST['password'],$_REQUEST['homedir'],$_REQUEST['shell'],$_REQUEST['Uid'],$_REQUEST['Gid'],$_REQUEST['active'],$_REQUEST['id']);
//userid,passwd,homedir,shell,uid,gid,LoginAllowed,id
echo $ftp->editUser($data);
}
}
else
{
if($id != -1)
{
echo "<h1>Ændring af FTP-brugerkonto</h1>";
$data = $ftp->getUserData($id);
$name = $data[0];
$passwd = $data[1];
$homedir = $data[2];
$shell = $data[3];
$uid = $data[4];
$gid = $data[5];
$active= $data[6];
$id = $data[7];
}
else
{
echo "<h1>Oprettelse af FTP-bruger</h1>";
$shell = "/bin/tcsh";
$homedir = "/usr/ftp/user";
$uid = "64001";
$gid = "65001";
$active= 1;
$name = "";
$passwd = "";
}
if($active == 1)
{
$on = "checked";
$off = "";
}
else
{
$on = "";
$off = "checked";
}
?>
<form name="ftpuser" action="edit.php" method="post">
<input type="hidden" name="id" value="<?=$id?>">
<table>
<tr>
<td>Navn:</td><td><input type="text" name="name" value="<?=$name?>"/></td>
</tr>
<tr>
<td>Password:</td><td><input type="password" name="password" value="<?=$passwd?>"/></td>
</tr>
<tr>
<td>Homedir:</td><td><input type="text" name="homedir" value="<?=$homedir?>"/></td>
</tr>
<tr>
<td>Shell:</td><td><input type="text" name="shell" value="<?=$shell?>"/></td>
</tr>
<tr>
<td>Uid:</td><td><input type="text" name="Uid" value="<?=$uid?>"/></td>
</tr>
<tr>
<td>Gid:</td><td><input type="text" name="Gid" value="<?=$gid?>"/></td>
</tr>
<tr>
<tr>
<td>Aktiv</td><td>Ja:<input type="radio" name="active" <?echo $on?> value="1">Nej:<input type="radio" name="active" <?echo $off?> value="0"></td>
</tr>
<tr>
<td></td><td><input type="submit" name="submit" value="Send"/><input type="reset" name="clear" value="Reset"/></td>
</tr>
</table>
</form>
<?
}
?>
Skrevet tir. d. 04. oktober 2005 kl. 19:39:48| #25
index.php
<?php
include_once "class.ftp.php";
echo $ftp->index();
?>
Skrevet tir. d. 04. oktober 2005 kl. 19:40:46| #26
class.ftp.php:
<?php
include_once "db_mysql.ftp.php";
class FTP
{
var $dbh;
function FTP()
{
$this->dbh = new DBH();
}
function index()
{
$user = "";
$string = "<h1>Administration af FTP-brugere</h1>";
$sth = $this->dbh->prepare('SELECT id,userid FROM usertable');
$sth->execute();
if($sth->rows() > 0)
$string .= "<table><tr><th><b>Bruger</b></th></tr>";
while (list($id,$userid) = $sth->fetch_one_row() )
{
$string .= '<tr><td><a href="show.php?id='.$id.'">'.$userid.'</a></td>';
$string .= '<td><form action="removefromlog.php?id='.$id.'" method="post"><input type="submit" value="Slet log"></input></form></td>';
$string .= '<td><form action="edit.php?id='.$id.'" method="post"><input type="submit" value="Rediger"></input></form></td>';
$string .= '<td><form action="delete.php?id='.$id.'" method="post"><input type="submit" value="Slet"></input></form></td>';
$string .= "</tr>";
}
$string .= '<tr><td><form action="edit.php?id=-1" method="post"><input type="submit" value="Opret"></input></form></td><td></td></tr></table>';
return $string;
}
function showUserData($id)
{
$string = "<h1>Administration af FTP-brugere</h1>";
$sth = $this->dbh->prepare('SELECT userid,passwd,homedir,shell,uid,gid,LoginAllowed,count,last_login, last_logout FROM usertable WHERE id=?');
$sth->execute($id);
while (list($userid,$passwd,$homedir,$shell,$uid,$gid,$LoginAllowed,$count,$last_login,$last_logout) = $sth->fetch_one_row() )
{
$user = $userid;
$string .= '<table><tr><th><b>Data</b></th><th></th></tr>';
$string .= '<tr><td>Bruger:</td><td>'.$userid.'</td></tr>';
$string .= '<tr><td>Homedir:</td><td>'.$homedir.'</td></tr>';
$string .= '<tr><td>Sheel:</td><td>'.$shell.'</td></tr>';
$string .= '<tr><td>Uid:</td><td>'.$uid.'</td></tr>';
$string .= '<tr><td>Gid:</td><td>'.$gid.'</td></tr>';
if($LoginAllowed == 1)
{
$open = "<FONT class='authgood'>Aktiv</FONT>";
}
else
{
$open = "<FONT class='authbad'>Inaktiv</FONT>";
}
$string .= '<tr><td>Konto:</td><td>'.$open.'</td></tr>';
$string .= '<tr><td>Logins:</td><td>'.$count.'</td></tr>';
$string .= '<tr><td>Sidste login:</td><td>'.$last_login.'</td></tr>';
$string .= '<tr><td>Sidste logout:</td><td>'.$last_logout.'</td></tr>';
$string .= '</table>';
}
echo $userid;
$sth1 = $this->dbh->prepare('SELECT file,bytes,host,ip,cmd,transfer_time,time,status FROM xfer_stats WHERE usr=?');
$sth1->execute($user);
if($sth1->rows() > 0)
{
$string .= "<hr /><table border><tr><th>File</th><th>Størrelse</th><th>Host</th><th>Ip</th><th>Cmd</th><th>Overførselstid</th><th>Tid</th><th>Status</th></tr>";
while (list($file,$bytes,$host,$ip,$cmd,$transfer_time,$time,$status) = $sth1->fetch_one_row() )
{
$string .= "<tr><td>".$file."</td>";
$string .= "<td>".$bytes."</td>";
$string .= "<td>".$host."</td>";
$string .= "<td>".$ip."</td>";
$string .= "<td>".$cmd."</td>";
$string .= "<td>".$transfer_time."</td>";
$string .= "<td>".$time."</td>";
$string .= "<td>".$status."</td></tr>";
}
$string .= '</table>';
}
$string .= '<form action="index.php" method="post"><input type="submit" value="Tilbage"></input></form>';
return $string;
}
function createUser($data)
{
$string = '<h1>FTP-bruger</h1>';
$string .='<p>De indtastede data er blevet gemt i databasen. <br /><a href="./">Hop til oversigten</a>.';
$query = "INSERT INTO usertable (userid,passwd,homedir,shell,uid,gid,LoginAllowed) VALUES (?,Password(?),?,?,?,?,?)";
$sth = $this->dbh->prepare($query);
$sth->execute($data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6]);
return $string;
}
function editUser($data)
{
$string = '<h1>Ændringer gemt</h1>';
$string .='<p>De indtastede data er blevet gemt i databasen. <br /><a href="./">Hop til oversigten</a>.';
$sth = $this->dbh->prepare('UPDATE usertable SET userid=?,passwd=?,homedir=?,shell=?,uid=?,gid=?,LoginAllowed=? WHERE id=?');
$sth->execute($data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6],$data[7]);
return $string;
}
function getUserData($id)
{
$sth = $this->dbh->prepare('SELECT userid,passwd,homedir,shell,uid,gid,LoginAllowed,id FROM usertable WHERE id=?');
$sth->execute($id);
list($userid,$passwd,$homedir,$shell,$uid,$gid,$LoginAllowed,$id) = $sth->fetch_one_row();
$data = array($userid,$passwd,$homedir,$shell,$uid,$gid,$LoginAllowed,$id);
return $data;
}
function deleteUser($id,$files)
{
$sth = $this->dbh->prepare('DELETE FROM usertable WHERE id=?');
$sth->execute($id);
$string = "<h1>FTP-bruger slettet</h1>";
$string .= "<p>FTP-brugeren er slettet. <br /><a href=\"./\">Hop til oversigten</a>.</p>";
return $string;
}
function showDeleteUser($id)
{
$sth = $this->dbh->prepare('SELECT userid FROM usertable WHERE id=?');
$sth->execute($id);
list($userid) = $sth->fetch_one_row();
$string = "<h1>Sletning af FTP-bruger</h1>";
$string .= '<p>Er du sikker på at du vil slette følgende FTP-bruger:</p>';
$string .= "<p>".$userid."</p>";
$string .= '<form action="delete.php" method="post"><table>';
$string .= '<tr><td>Slet filer:</td><td>Ja:<input type="radio" name="files" checked value="1"> Nej:<input type="radio" name="files" value="0"></td></tr></table>';
$string .= '<input type="hidden" name="delete" value="true"></input><input type="hidden" name="id" value="'.$id.'"></input><input type="submit" name="submit" value="Bekræft"></input></form>';
return $string;
}
function removeUserLog($id)
{
$sth = $this->dbh->prepare('SELECT userid FROM usertable WHERE id=?');
$sth->execute($id);
list($userid) = $sth->fetch_one_row();
$sth = $this->dbh->prepare('DELETE FROM xfer_stats where usr=?');
$sth->execute($userid);
$string = "<h1>Log slettet</h1>";
$string .= '<p>Loggen for '.$userid.' blev slettet!</p>';
$string .= '<form action="index.php" method="post"><input type="submit" value="Tilbage"></input></form>';
return $string;
}
}
$ftp = new FTP();
?>
Skrevet tir. d. 04. oktober 2005 kl. 19:42:28| #27
Funktionerne i class.ftp.php gør det muligt at du ikke skal have en masse grim mysq-kode i dine filer - men du skal dog være opmærksom på at du bliver nød til at ændre i funktionerne - du ikke kan bruge denne logik:
$sth = $this->dbh->prepare('SELECT userid FROM usertable WHERE id=?');
$sth->execute($id);
Skrevet tir. d. 04. oktober 2005 kl. 19:43:40| #28
Krukken aner overhovedet ikke hvor jeg skal rette og hvad jeg skal rette :S
Skrevet tir. d. 04. oktober 2005 kl. 19:46:39| #29
Hvad arbejder du på er det windows eller linux/unix?
Skrevet tir. d. 04. oktober 2005 kl. 19:48:16| #30
Skrevet tir. d. 04. oktober 2005 kl. 19:52:23| #31
Altså jeg må nok indrømme at det kommer til at tage for lang tid at forklare dig herover hvert enkelte skridt - så det ville være noget lettere for mig at lave det hele selv. OG det ville nok ca. tage 30 min, hvis jeg havde adgang til din database.
Hvis du nu have arbejdet på unix ville det have været så nemt at logge ind via ssh - og arbejde på din computer. (lige en lille salgstale for open source:-))
Skrevet tir. d. 04. oktober 2005 kl. 19:53:59| #32
har lige fået en ide :P må lige afprøve skittet 8)
Skrevet tir. d. 04. oktober 2005 kl. 19:57:29| #33
okay - om ikke andet, så prøv at kopiere den kode ind som i de filer som jeg har angivet. Det er i hvert fald hen ad hvad det er du skal bruge.
Skrevet tir. d. 04. oktober 2005 kl. 19:59:13| #34
(tror måske krukken eksempel er et riiimeligt overkill pt.)
;-)
Skrevet tir. d. 04. oktober 2005 kl. 20:02:30| #35
har lige bikset der her sammen
Den har lidt fejl Feks submit knappen kommer ovenover det andet :S og så skriver den ikke brugeren er slettet feks når man vælger slet
det er meget simpelt.. men det er ikke behov for noget helt vildt powerkodning som du vidste der oppe :P for så kan jeg ikke gå ind og ændre senere hvis der skulle blive behov for det, da jeg ikke er så god endnu :P ( har jeg vidst sagt )
<?php
$fjolletobakII = mysql_query("SELECT * FROM users WHERE klan='".$_SESSION['klan']."'") or die(mysql_error());
while ($fjol = mysql_fetch_array($fjolletobakII)) {
$sus = $fjol['user'];
echo "<table><form action=\"#\" method=\"POST\" name=\"submit\">";
echo "<tr><td><b>Brugere</b></td><td><b>Handlinger</b></td></tr>";
echo "<tr><td>".$fjol['user']."</td><td><select name=\"".$fjol['user']."\"><option value=\"ingen\">Intet</option><option value=\"slet\" >Slet</option><option value=\"aktiver\" >Aktiver</option><option value=\"unaktiver\" >UnAktiver</option></select></td></tr>";
echo "<input name=\"submit\" type=\"submit\" value=\"Ret\" >";
echo "</form></table>";
}
if ($_POST['$sus'] == "") {
// gør intet //
}
elseif ($_POST['$sus'] == "slet") {
// mysql //
echo "brugeren er slettet"; }
elseif ($_POST['$sus'] == "aktiver") {
// mysql //
echo "brugeren er Aktiveret"; }
elseif ($_POST['$sus'] == "unaktiver") {
// mysql //
echo "brugeren er unAktiveret"; }
?>
Skrevet tir. d. 04. oktober 2005 kl. 20:19:16| #36
hvad med dette:
<?php
$fjolletobakII = mysql_query("SELECT * FROM users WHERE klan='".$_SESSION['klan']."'") or die(mysql_error());
while ($fjol = mysql_fetch_array($fjolletobakII)) {
$sus = $fjol['user'];?>
<table>
<form action="denne_side.php?user_id=<?=$fjol['id']?>" method="POST">
<tr>
<td><b>Brugere</b></td>
<td><b>Handlinger</b></td>
</tr>
<tr>
<td><?=$fjol['user']?></td>
<td>
<select name="action">
<option value="ingen">Intet</option>
<option value="slet" >Slet</option>
<option value="aktiver">Aktiver</option>
<option value="unaktiver" >UnAktiver</option>
</select>
</td>
</tr>
<input name="submit" type="submit" value="Ret" >
</form>
</table>
}
$user_id = $_POST['user_id'];
$action = $_POST['action'];
if ( $action == "") {
// gør intet //
}
elseif ($action == "slet") {
// mysql //
echo "brugeren skal slettes"; }
elseif ($action == "aktiver") {
// mysql //
echo "brugeren skal Aktiveres"; }
elseif ($action == "unaktiver") {
// mysql //
echo "brugeren skal unAktiveres";
}
?>
udskift denne_side.php med det din side hedder
Skrevet tir. d. 04. oktober 2005 kl. 20:20:27| #37
krukken >> Lad mig sige med det samme at yes det _er_ nødvendigt for et ordentligt framework at køre med en sådan objectstruktur du leger med (hvilket ser lækkert ud foriøvrigt)... men men alt ting til sin tid :-)
Skrevet tir. d. 04. oktober 2005 kl. 20:22:33| #38
mht til submitknappen så skal den lige kaples ind sådan her:
<tr>
<td>
<input name="submit" type="submit" value="Ret" >
</td>
</tr>
Skrevet tir. d. 04. oktober 2005 kl. 20:28:07| #39
"Everything worth doing is worth overdoing" Krukken 4. oktober. Man kan ligeså godt lave ting ordentlig første gange, istedet for at bruger tid på det to gange:-)
Skrevet tir. d. 04. oktober 2005 kl. 20:28:32| #40
Horsmark eller krukken =)
har i en løsning i min simple kode der gør at man kan aktivere eller slette 2 brugere på samme tid.. har ændret koden sådan at alle brugerne er inde under den samme <form>
Skrevet tir. d. 04. oktober 2005 kl. 20:30:33| #41
hmm har 2 brugere indtil videre mig selv og en test en..
når den lister de 2 brugere inde i formen virker kun den sidste :S
Skrevet tir. d. 04. oktober 2005 kl. 20:34:59| #42
satte dem tilbage til hver sin form =) er mere brugervenligt :p
Skrevet tir. d. 04. oktober 2005 kl. 20:37:06| #43
hyanen >> start med at få det du har nu til at virke fornuftigt. Så går der sikkert ikke lang tid før du kan overskue en smartere og mere sexet måde at gøre det på (og mere sikker måde for den sags skyld)
Skrevet tir. d. 04. oktober 2005 kl. 20:40:03| #44
horsmark du siger noget der :p
Skrevet tir. d. 04. oktober 2005 kl. 21:05:37| #45
har fået det hele til at spille :) Takker for hjælpen ;)ligger i ikke begge et svar.. =)?
Skrevet tir. d. 04. oktober 2005 kl. 21:09:01| #46
Skrevet tir. d. 04. oktober 2005 kl. 21:17:10| #47
ingen point til horsmark *g* ;=)
Skrevet ons. d. 05. oktober 2005 kl. 15:36:58| #48
Skrevet tor. d. 06. oktober 2005 kl. 08:17:05| #49