Druckbare Version des Themas
Hier klicken um das Thema im Original Format zu betrachten.
Braunschweiger MailBox - Forum > Help Forum > Neues projekt


Geschrieben von: Tekbaron am Donnerstag, 19.Juni 2003, 17:42 Uhr
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


Geschrieben von: Ingo am Freitag, 20.Juni 2003, 10:20 Uhr
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

Geschrieben von: Tekbaron am Dienstag, 24.Juni 2003, 15:53 Uhr
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.

Geschrieben von: Ingo am Dienstag, 24.Juni 2003, 21:38 Uhr
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.

Geschrieben von: Tekbaron am Mittwoch, 25.Juni 2003, 11:10 Uhr
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.

Geschrieben von: Tekbaron am Freitag, 27.Juni 2003, 13:08 Uhr
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;

Geschrieben von: Ingo am Samstag, 28.Juni 2003, 19:50 Uhr
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

Geschrieben von: Tekbaron am Montag, 30.Juni 2003, 15:01 Uhr
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?


Geschrieben von: Ingo am Dienstag, 01.Juli 2003, 00:10 Uhr
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 :)

Geschrieben von: Tekbaron am Dienstag, 01.Juli 2003, 08:55 Uhr
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

Geschrieben von: Ingo am Dienstag, 01.Juli 2003, 11:24 Uhr
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 ..


Geschrieben von: Tekbaron am Dienstag, 01.Juli 2003, 19:48 Uhr
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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)