Powered by Invision Power Board


  Reply to this topicStart new topicStart Poll

> Neues projekt
Tekbaron
Geschrieben am: Donnerstag, 19.Juni 2003, 17:42 Uhr


Leader
********

Gruppe: [-bmb-]Admin
Beiträge: 2385
Mitgliedsnummer.: 12
Mitglied seit: 2001-03-07




So da wollte ich mal ein neues Projekt anfangen, und erstes Prob, das geht nur mit einem Perl Script.

Und zwar soll:

Per PHP Script eine SQL Datenbank gefüllt werden.
Ein Perl Script laufen das diese Daten ausliest, und damit was anstellt (hier user anlegen und die /etc/aliases bearbeitet)

So nun meine Frage kann mir da mal jemand mit dem perl helfen, und dem php so fitt bin ich dann doch nett



--------------------
mfg Tekbaron Leader [-bmb-] Clan

user posted image

user posted image

user posted image
PMUsers WebsiteICQ
Top
Ingo
Geschrieben am: Freitag, 20.Juni 2003, 10:20 Uhr


KillingSpree
****

Gruppe: [-bmb-]Rootserver
Beiträge: 192
Mitgliedsnummer.: 3
Mitglied seit: 2001-03-07




Also, erst mal eine Gegenfrage : wer hat gesagt, das das nur mit einem Perl Script geht ??? Und was genau soll es denn machen, Dein Script ? Also, ich denke schonmal, das ich Dir da etwas helfen kann, zumindest bei dem PHP. Kannst ja mal hier posten, was Du gerne hättest  :D

Ingo
PMEmail PosterUsers WebsiteICQAOLYahoo
Top
Tekbaron
Geschrieben am: Dienstag, 24.Juni 2003, 15:53 Uhr


Leader
********

Gruppe: [-bmb-]Admin
Beiträge: 2385
Mitgliedsnummer.: 12
Mitglied seit: 2001-03-07




Ja was will ich machen:

Es soll möglich sein daten aus 2 oder 3 masken via web in eine sql datenbank zu schreiben.

Diese daten sollen von dem Perl ausgelesen werden und weiter verarbeitet werden.

Das ganze soll user/aliases auf einem linux system anlegen.

nicht mehr und nicht weniger

also das perl dann ein useradd mit den daten aus der datenbank machen und die standart aliases mit den zusätzlichen daten aus der datenbank zusammen kopieren.


--------------------
mfg Tekbaron Leader [-bmb-] Clan

user posted image

user posted image

user posted image
PMUsers WebsiteICQ
Top
Ingo
Geschrieben am: Dienstag, 24.Juni 2003, 21:38 Uhr


KillingSpree
****

Gruppe: [-bmb-]Rootserver
Beiträge: 192
Mitgliedsnummer.: 3
Mitglied seit: 2001-03-07




Aha, so so. Also mit dem PHP kann ich helfen, bei dem Perl leider nicht. Daten per Formular abzufragen und in eine Datenbank einzugeben ist eigentlich nicht weiter schwer.
PMEmail PosterUsers WebsiteICQAOLYahoo
Top
Tekbaron
Geschrieben am: Mittwoch, 25.Juni 2003, 11:10 Uhr


Leader
********

Gruppe: [-bmb-]Admin
Beiträge: 2385
Mitgliedsnummer.: 12
Mitglied seit: 2001-03-07




Na das ist doch schonmal was, ich hoffe bei dem Perl kann mir dann Martin helfen  ;)

Wie wollen wir anfangen, ist dann jetzt die Frage ?

Zur Datenbank habe ich mir schon Gedanken gemacht, also eigentlich weiss ich schon wies werden muss, nur mit der umsetszung happerts halt noch.


--------------------
mfg Tekbaron Leader [-bmb-] Clan

user posted image

user posted image

user posted image
PMUsers WebsiteICQ
Top
Tekbaron
Geschrieben am: Freitag, 27.Juni 2003, 13:08 Uhr


Leader
********

Gruppe: [-bmb-]Admin
Beiträge: 2385
Mitgliedsnummer.: 12
Mitglied seit: 2001-03-07




So klein ist der Anfang hier mal das Perl was auch schon was tut, nicht viel aber jeder hat mal klein angefangen  :finger:

Code

#!/usr/bin/perl
# Status
# 0 = nix machen
# 1 = new
# 2 = change
# 3 = delete
use DBI;
$hostname="localhost";
$port="3306";
$database="database";
$user="user";
$password="passwort";
$zeit = localtime(time);
$dbh = DBI->connect("DBI:mysql:$database:$hostname:$port",
$user, $password);
$sth = $dbh->prepare("select * from WTpopuser
                     where status=1");
$sth->execute;
while ( ($uid, $username, $gruppe, $name, $passwort, $cryptpw, $home, $shell, $email, $status, $addedby, $addedtime, $changedby, $changedtime) = $sth->fetchrow_array ) {
$result = system("/usr/sbin/useradd","-u",$uid,"-g",$gruppe,"-d",$home,"-s",$shell,"-c",$name,"-p",$cryptpw,$username);
if ($result) {
open (FILE,">>/var/log/anwendungs.log");
print FILE "$zeit | User $username konnte nicht angelegt werden\n";
close(FILE);
            }
else {
open (FILE,">>/var/log/anwendungs.log");
print FILE "$zeit | User $username wurde angelegt\n";
close(FILE);
    }
}
exit 0;


--------------------
mfg Tekbaron Leader [-bmb-] Clan

user posted image

user posted image

user posted image
PMUsers WebsiteICQ
Top
Ingo
Geschrieben am: Samstag, 28.Juni 2003, 19:50 Uhr


KillingSpree
****

Gruppe: [-bmb-]Rootserver
Beiträge: 192
Mitgliedsnummer.: 3
Mitglied seit: 2001-03-07




So, hier mal meine Gedanken zum PHP. Zuerst ein HTML File, das nur das Formular enthält. Ich trenne PHP und HTML gerne, damit man leichter auf das Layout bei anderen Seiten anpassen kann. Das könnte dann ungefähr so aussehen : Formular.html
Code

<form method="post" action="anmelden.php">
E-Mail<input type="text" name="email" size="20"><br>
gewünschter Username<input type="text" name="username" size="20"><br>
Passwort<input type="password" name="passwort" size="20"><br>
<input type="submit" value="anmelden">
<input type="reset" value="abbrechen">
</form>

Wichtig sind method = post und Das Action Tag, das auf unser PHP Script zeigt. Dieses verarbeitet dann die Eingaben
Anmelden.PHP
Code

<?
$email = stripslashes($_POST['email'];
$username = stripslahses($_POST['username'];
§passwort = stripslashes($_POST['passwort'];
$Host='localhost';
$DB_user='user';
$DB_passwort='password';
$DB_name='datenbank';
$verbindung = mysql_connect($host, $DB_user, $DB_passwort);
$datenbank = mysql_select_db($DB_name,$verbindung);
$sql = mysql_querry("INSERT INTO tabelle (email, username, passwort) VALUES ('$email', '$username', '$passwort'") or die(mysql_error());
mysql_close($verbindung);

Jaaa, man sollte natürlich noch ausfürliche Fehler-Checks machen, ob überhaupt was eingegeben wurde, ob eine gültige Email usw einegegeben wurde, ob username oder Email schon in der Datenbank existieren, ob Verbindung zur DB geklappt hat etc. Ach ja, und natürlich muß in der Datenbank eine Tabelle mit dem Namen 'tabelle' und den entsprechenden Feldern erstellt werden ;-)
Das Paßwort sollte vielleicht auch besser mit $passwort = md5($passwort) verschlüsselt werden. Jo, wer Interesse an mehr hat, hier rein posten, dann mache ich das mal bei Gelegenheit. Ach ja, und zu Risken und Nebenwirkungen ... gibt es keine Gewähr  :finger:  Der Code ist nur so mal eben hingeschrieben und nicht getestet. Noch ein kleiner Hinweis : immer darauf achten, was gerade für Klammern benutzt werden, also () {} und [] ... kann manchmal Stunden unnötiger Fehlersuche ersparen  :D
Viel Spaß beim Testen
PMEmail PosterUsers WebsiteICQAOLYahoo
Top
Tekbaron
Geschrieben am: Montag, 30.Juni 2003, 15:01 Uhr


Leader
********

Gruppe: [-bmb-]Admin
Beiträge: 2385
Mitgliedsnummer.: 12
Mitglied seit: 2001-03-07




So das ganze mal soweit wie ich bin:

formular.html
Code

<html>

<head>
<title></title>
</head>

<body>

<form method="post" action="anmelden.php">
 <p>UID<input type="text" name="uid" size="3"><br>
 Personalnummer<input type="text" name="username" size="3"><br>
 Name<input type="text" name="name" size="20"><br>
 E-Mail<input type="text" name="email" size="20"><br>
 <input type="submit" value="anmelden"> <input type="reset" value="abbrechen"> </p>
</form>
</body>
</html>

anmelden.php
Code

<?
$username = stripslashes($_POST['username']);
$name = stripslashes($_POST['name']);
$email = stripslashes($_POST['email']);
$Host='localhost';
$DB_user='user';
$DB_passwort='passwort';
$DB_name='db';
$saltos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
$time = time()+(3600*24*365);
$passwort = substr(md5(time()),0,8);
$cryptpw = crypt(strip_tags($passwort), $saltos);
$verbindung = mysql_connect($host, $DB_user, $DB_passwort);
$datenbank = mysql_select_db($DB_name,$verbindung);
$sql = mysql_query("INSERT INTO popuser
   (uid,username,gruppe,name,passwort,cryptpw,home,shell,email,status,addedby,addedtime,cha


ngedby,changedtime)
   VALUES ('612','pop$username','102','$name','$passwort','$cryptpw','/XnirvanaX','/bin/false','$email','1','jm','$time','jm','$time')");
mysql_close($verbindung);
include("/home/jm/public_html/anwendung/abfrage.php");
?>

abfrage.php
Code

<html>
<H1>User</H1>
<?
$host='localhost';
$user='user';
$password='passwort';
$db='db';
$connect = mysql_connect($host,$user,$password);
mysql_select_db($db, $connect);
$query = mysql_query('SELECT * FROM popuser' ,$connect)
or die ("Invalid query");
echo "<table border=1<\n";
echo "<tr><td>uid</td>
         <td>username</td>
 <td>gruppe</td>
 <td>name</td>
 <td>passwort</td>
 <td>cryptpw</td>
 <td>home</td>
 <td>shell</td>
 <td>email</td>
 <td>status</td>
 <td>addedby</td>  
 <td>addedtime</td>  
 <td>changedby</td>  
 <td>changedtime</td>  
 <tr>";
while($array = mysql_fetch_array($query)) {
$status=$array["status"];
echo "<tr>\n";
echo "<td bgcolor=white>",
   $array["uid"], "</td><td>",
   $array["username"], "</td><td>",
   $array["gruppe"], "</td><td>",
   $array["name"], "</td><td>",    
   $array["passwort"], "</td><td>",
   $array["cryptpw"], "</td><td>",
   $array["home"], "</td><td>",
   $array["shell"], "</td><td>",
   $array["email"], "</td><td>";
   if       ($status == 0) {
   echo "normal";
   } elseif ($status == 1) {
   echo "neu";
   } elseif ($status == 2) {
   echo "geändert";
   } elseif ($status == 3) {
   echo "gelöscht";
   } else                  {
   echo "fehler";    
   }    
echo "<td bgcolor=white>",
   $array["addedby"], "</td><td>",
   date("d.m.Y, H:i",$array["addedtime"]+$time_offset), "</td><td>",
   $array["changedby"], "</td><td>",
           date("d.m.Y, H:i",$array["changedtime"]+$time_offset), "</td><td>",
   "</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
mysql_close($connect);
?>
</html>


So nun wie bekomme ich die Letzte vergebene uid raus hier 612, beim nächsten sollte dann ja 613 genommen werden. Irgent welche Ideen?



--------------------
mfg Tekbaron Leader [-bmb-] Clan

user posted image

user posted image

user posted image
PMUsers WebsiteICQ
Top
Ingo
Geschrieben am: Dienstag, 01.Juli 2003, 00:10 Uhr


KillingSpree
****

Gruppe: [-bmb-]Rootserver
Beiträge: 192
Mitgliedsnummer.: 3
Mitglied seit: 2001-03-07




Also, im Prinzip ganz einfach, für die UID das Flag "auto-increment" im MySQL setzen, dann wird mit jedem User automatisch hochgezählt. Sprich, die UID wird gar nicht vom Script eingetragen sondern von der Datenbank selbst erzeugt.

Die Sache mit dem Erzeugen vom Paßwort gefällt mir aber noch nicht, ist aber Geschmackssache  :D
Aber willst Du wirklich das unverschlüsselte Paßwort auch in die Datenbank mit eintragen ? Warum ???

Oh, sehe gerade, im Formular fragst Du ja die UID ab ? Aber ausgelesen wird sie dann im PHP Script nicht mehr  :finger:

Na denn, wenn sonst noch Fragen auftauchen, immer her damit :)
PMEmail PosterUsers WebsiteICQAOLYahoo
Top
Tekbaron
Geschrieben am: Dienstag, 01.Juli 2003, 08:55 Uhr


Leader
********

Gruppe: [-bmb-]Admin
Beiträge: 2385
Mitgliedsnummer.: 12
Mitglied seit: 2001-03-07




Zitat (Ingo @ 01.07.2003,00:10)
Also, im Prinzip ganz einfach, für die UID das Flag "auto-increment" im MySQL setzen, dann wird mit jedem User automatisch hochgezählt. Sprich, die UID wird gar nicht vom Script eingetragen sondern von der Datenbank selbst erzeugt.

Die Sache mit dem Erzeugen vom Paßwort gefällt mir aber noch nicht, ist aber Geschmackssache  :D
Aber willst Du wirklich das unverschlüsselte Paßwort auch in die Datenbank mit eintragen ? Warum ???

Oh, sehe gerade, im Formular fragst Du ja die UID ab ? Aber ausgelesen wird sie dann im PHP Script nicht mehr  :finger:

Na denn, wenn sonst noch Fragen auftauchen, immer her damit :)

1.   Teste ich mal.

2.   In wie fern gefällt dir dat nicht ?
2.1 Wir brauchen die PW´s noch in anderen Anwendungen, und da kann ich dann keine Crypt dinger gebrauchen.  :finger:

3. ach gott, hatte ich vergessen zu ändern nach dem Testen *grumpf


--------------------
mfg Tekbaron Leader [-bmb-] Clan

user posted image

user posted image

user posted image
PMUsers WebsiteICQ
Top
Ingo
Geschrieben am: Dienstag, 01.Juli 2003, 11:24 Uhr


KillingSpree
****

Gruppe: [-bmb-]Rootserver
Beiträge: 192
Mitgliedsnummer.: 3
Mitglied seit: 2001-03-07




noch zu 1.
Code

CREATE TABLE popusers (
 uid int(25) NOT NULL auto_increment,
 username varchar(25) NOT NULL default ' ',
 gruppe int(25) NOT NULL default '102 ',
 nachname varchar(25) NOT NULL default ' ',
 .
 .
 .
PRIMARY KEY (uid)
UNIQUE_KEY username (username)
)
TYPE =MyISAM COMMENT='Jörg Arbeit erleichtern';


Zu 2. Naja, Zufalls-Paßwörter erzeugen, dafür gibt es viele Möglichkeiten, aber das ist wie gesasgt Geschmackssache. Aber das verschlüsseln 'nur' mit md5 ist nicht sicher, da die Möglichkeit besteht, das verschiedene Strings den gleichen verschlüsselten Code ergeben (weiß nicht, wie das bei crypt ist), Aber da auch das unverschlüsselte Passwort in der DB steht wohl nicht so wichtig ..

PMEmail PosterUsers WebsiteICQAOLYahoo
Top
Tekbaron
Geschrieben am: Dienstag, 01.Juli 2003, 19:48 Uhr


Leader
********

Gruppe: [-bmb-]Admin
Beiträge: 2385
Mitgliedsnummer.: 12
Mitglied seit: 2001-03-07




Das Verschlüsselte PW brauche ich als Login für Linux (MailServer) das Unverschlüsselte, für die pop3 Postfächer, oder besser für die Mailclients. Nur mal zum Verständnis.


--------------------
mfg Tekbaron Leader [-bmb-] Clan

user posted image

user posted image

user posted image
PMUsers WebsiteICQ
Top

Topic Options Reply to this topicStart new topicStart Poll