iB-InformatikBoard.ch - Benutzer helfen Benutzern   IT-Lohnumfrage ¦ MS-CLIP ¦ Google  


     
     
"5.3 Sterne"   

    Diskussionen über Freizeit und Job: Diskussionen über Weiterbildung: Diskussionen über die Computerwelt:  
    Neu hier? Forum für Einsteiger
Wichtige F.A.Q.'s und Regeln
Off Topic
iB-Updates und News
Feedback und Vorschläge
Informatik Job-Forum
Ich suche eine Informatikstelle
Ich biete eine Informatikstelle
Microsoft MCSE Zertifikate
Microsoft Zertifikate Allgemein
CISCO Zertifikate
SIZ-Zertifikaten und Lernhilfen
Zertifikate und Diplome Allgemein
Weiterbildung mit E-Learning
Windows Workstation   Windows Server
Software Allgemein   Linux Software
Programmiersprachen   Webdesign
Security   Internet
Hardware/Netzwerk   Wireless
Pockets, Smartphones, PDA's   Games
Allgemeine Tipps, Bücher und Tools
HowTo    Online Schnäppchen
 
   

Willkommen auf informatikBoard.ch - Benutzer helfen Benutzern
Zurück   iB-Startseite > Informiere dich über die Computerwelt: Geräte, Hard- und Software > Webdesign/Webprogrammierung
Willkommen bei InformatikBoard.ch:
Bevor du Schreiben oder Antworten kannst,
musst du dich hier kostenlos Registrieren!

Antwort
 
LinkBack Themen-Optionen
PHP Login
Alt
  (#1)
Erfahrener Benutzer
 
Benutzerbild von BlackShark
 
Status: Offline
Beiträge: 201
Registriert seit: 29.03.2005
Ort: ZH
Alter: 24
Frage PHP Login - 05.03.2007, 13:49

hallo,

ich kenne mich nur ganz oberflächlich mit PHP aus. Habe folgendes Problem:

wir haben ein neues Monitoringprogramm installiert (cacti, vielleicht kennt das ja jemand).

am anfang kommt immer ein loginscreen auf welchem man das passwort eingeben muss. nun möchte ich einen link erstellen, welcher diese loginseite öffnet und gleich das login und passwort in die beiden input fields schreibt, sodass man nur noch auf login klicken muss. Oder dass sogar gleich der Befehl für den Login mit Passwort gesendet wird, und man sich direkt eingeloggt wieder findet.

PHP Code der Datei auth_login.php5
[PHP]/* set default action */
if (!isset($_REQUEST["action"])) { $_REQUEST["action"] = ""; }

switch ($_REQUEST["action"]) {
case 'login':
/* --- start ldap section --- */
$ldap_auth = false;
if ((read_config_option("ldap_enabled") == "on") && ($_POST["realm"] == "ldap") && (strlen($_POST["login_password"])) && (strlen($_POST["login_username"]))){
$ldap_conn = ldap_connect(read_config_option("ldap_server"));

if ($ldap_conn) {
$ldap_dn = str_replace("<username>",$_POST["login_username"],read_config_option("ldap_dn"));
$ldap_response = @ldap_bind($ldap_conn,$ldap_dn,stripslashes($_POST["login_password"]));

if ($ldap_response) {
$ldap_auth = true;
if (sizeof(db_fetch_assoc("select * from user_auth where username='" . $_POST["login_username"] . "' and realm = 1")) == 0) {
/* copy template user's settings */
user_copy(read_config_option("ldap_template"), $_POST["login_username"], 1);
}
}
}
}
/* --- end ldap section --- */

if ($ldap_auth) {
$user = db_fetch_row("select * from user_auth where username='" . $_POST["login_username"] . "' and realm = 1");
} else {
$user = db_fetch_row("select * from user_auth where username='" . $_POST["login_username"] . "' and password = '" . md5($_POST["login_password"]) . "' and realm = 0");
}

if (sizeof($user)) {
/* make entry in the transactions log */
db_execute("insert into user_log (username,user_id,result,ip,time) values('" . $_POST["login_username"] ."'," . $user["id"] . ",1,'" . $_SERVER["REMOTE_ADDR"] . "',NOW())");

/* set the php session */
$_SESSION["sess_user_id"] = $user["id"];

/* handle "force change password" */
if ($user["must_change_password"] == "on") {
$_SESSION["sess_change_password"] = true;
}

/* ok, at the point the user has been sucessfully authenticated; so we must
decide what to do next */
switch ($user["login_opts"]) {
case '1': /* referer */
if (sizeof(db_fetch_assoc("select realm_id from user_auth_realm where realm_id=8 and user_id=" . $_SESSION["sess_user_id"])) == 0) {
header("Location: graph_view.php5");
}else{
header("Location: " . (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "index.php5"));
}
break;
case '2': /* default console page */
header("Location: index.php5"); break;
case '3': /* default graph page */
header("Location: graph_view.php5"); break;
}

exit;
}else{
/* --- BAD username/password --- */
db_execute("insert into user_log (username,user_id,result,ip,time) values('" . $_POST["login_username"] . "',0,0,'" . $_SERVER["REMOTE_ADDR"] . "',NOW())");
}
}

?>
<html>
<head>
<title>Login to Cacti</title>
<STYLE TYPE="text/css">
<!--
BODY, TABLE, TR, TD {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px;}
A {text-decoration: none;}
A:active { text-decoration: none;}
A:hover {text-decoration: underline; color: #333333;}
A:visited {color: Blue;}
-->
</style>
</head>

<body bgcolor="#FFFFFF" onload="document.login.login_username.focus()">

<!-- apparently IIS 5/4 have a bug (Q176113) where setting a cookie and calling the header via
'Location' does not work. This seems to fix the bug for me at least... -->
<form name="login" method="post" action="<?php print basename($_SERVER["PHP_SELF"]);?>">

<table align="center">
<tr>
<td colspan="2"><img src="images/auth_login.gif" border="0" alt=""></td>
</tr>
<?php
if ($_REQUEST["action"] == "login") {?>
<tr height="10"><td></td></tr>
<tr>
<td colspan="2"><font color="#FF0000"><strong>Invalid User Name/Password Please Retype:</strong></font></td>
</tr>
<?php }?>
<tr height="10"><td></td></tr>
<tr>
<td colspan="2">Please enter your Cacti user name and password below:</td>
</tr>
<tr height="10"><td></td></tr>
<tr>
<td>User Name:</td>
<td><input type="text" name="login_username" size="40" style="width: 295px;"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="login_password" size="40" style="width: 295px;"></td>
</tr>
<?php
if (read_config_option("ldap_enabled") == "on") {?>
<tr>
<td>Realm:</td>
<td>
<select name="realm" style="width: 295px;">
<option value="local">Local</option>
<option value="ldap" selected>LDAP</option>
</select>
</td>
</tr>
<?php }?>
<tr height="10"><td></td></tr>
<tr>
<td><input type="submit" value="Login"></td>
</tr>
</table>

<input type="hidden" name="action" value="login">

</form>

</body>
</html>
[/PHP]

Gibt es irgendwie die möglich den Befehl welcher bei klicken auf Login gesendet wird in einen Link zu verfassen oder eben die input fields per link zu "füllen"? oder habt ihr da noch ne andere idee?

natürlich bin ich nicht nur an der lösung interessiert, sondern auch am "lösungsweg". ich möchte das problem sozusagen nicht nur lösen sondern auch verstehen.

danke für die hilfe.

gruss


---
Wer später bremst ist länger schnell.
   
Mit Zitat antworten
PHP Login
 
Links zum gleichem Thema:
AW: PHP Login
Alt
  (#2)
Moderator
 
Benutzerbild von remix
 
Status: Offline
Beiträge: 678
Registriert seit: 15.01.2005
Ort: Oberbuchsiten
Alter: 36
Standard AW: PHP Login - 05.03.2007, 14:54

Ich löse das immer folgendermassen:

- Rufe die Login-Seite auf und lasse sie dir im Browser anzeigen.
- Betrachte jetzt den Quellcode der Seite
- Was Du brauchst ist der Teil von &lt;form&gt; bis &lt;/form&gt;, kopiere alles und setze das in eine neue html-Datei
- Beim form-Tag musst du ev. das Attribut action= auf den korrekten Pfad zur auth_login.php5 einstellen, falls du die neue html-Datei in ein anders Verzeichnis stellst.
- Bei &lt;input type="text" name="login_username" size="40" style="width: 295px;"&gt; setzst du noch das Attribut value="dein Benutzername" rein und bei &lt;input type="text" name="login_password" size="40" style="width: 295px;"&gt; das Attribut value="dein Passwort".
- jetzt noch dem body-Tag die Action onload=login.submit() geben und es sollte bereits klappen.
- wenn du willst, kannst du noch alle darstellungstechnischen Sachen aus der neuen html-Datei entfernen (keine input-Tags!), da diese eh nie angezeigt wird (also alle Styles, Tabellen-Aufteilungen, etc. Und dann kannst du auch noch alle input-Felder als hidden definieren, damit vor dem erfolgreichen login gar nichts mehr angezeigt wird.

Die neue html-Datei könnte dann ungefähr so aussehen:
[PHP]<html>
<head>
</head>
<body onload=login.submit()>


<form method="post" action="http://homepage.ch/verzeichnis/auth_login.php5" name="login">
<input type="hidden" name="blabla" value="blabla">
<input type="hidden" name="blabla2" value="blabla2">
<input type="hidden" name="login_username" value="XYZ">
<input type="hidden" name="login_password" value="XYZ">
</form>


</body>
</html>[/PHP]

Natürlich könnte man das ganze auch mit PHP lösen. Dazu müsste man den Befehl curl nutzen. Dieses obige Vorgehen empfiehlt sich immer dann, wenn man ein automatisches Login haben will, wo man kein Serverzugriff hat.

In deinem Fall würde es sicher auch genügen, in der auth_login.php5 die Werte fest einzugeben:

- Bei &lt;input type="text" name="login_username" size="40" style="width: 295px;"&gt; setzst du noch das Attribut value="dein Benutzername" rein und bei &lt;input type="text" name="login_password" size="40" style="width: 295px;"&gt; das Attribut value="dein Passwort".


Dieses Posting wurde aus 100% rezyklierten Elektronen hergestellt
und kann für die Umwelt absolut unschädlich gelöscht werden.
   
Mit Zitat antworten
AW: PHP Login
Alt
  (#3)
Moderator
 
Benutzerbild von IncSys
 
Status: Offline
Beiträge: 1,142
Registriert seit: 12.10.2004
Ort: Riehen
Alter: 20
Standard AW: PHP Login - 05.03.2007, 17:12

sonst kannst du auch Firefox nehmen, die Daten speichern und dann hast du die daten immer schön direkt im feld hinengeschrieben!


Gruss


Gruss
IncSys

"Es ist immer sinnvoll, von einem LAUFENDEN Rechner ein Acronis Image zu machen." Zitat gscht (org. Spacy)
 IncSys eine Nachricht über ICQ schicken IncSys eine Nachricht über MSN schicken  
Mit Zitat antworten
AW: PHP Login
Alt
  (#4)
Fortgeschrittener Benutzer
 
Benutzerbild von Xdreamer
 
Status: Offline
Beiträge: 176
Registriert seit: 14.04.2005
Ort: Steinen, SZ
Alter: 28
Standard AW: PHP Login - 05.03.2007, 19:38

Ja FF oder RoboForm oder was auch immer


My Workstation: AMD Athlon64 X2 6400+@3.2GHz Black Edition / Asus M2N32 WS Pro. / 4096 DDR800 Domiator / EVGA GF 8800GTX / 4*400GB / 1*250GB / Fatalaty X-FI / Vista Ult. X64
  Xdreamer eine Nachricht über AIM schicken Xdreamer eine Nachricht über MSN schicken  
Mit Zitat antworten
AW: PHP Login
Alt
  (#5)
Erfahrener Benutzer
 
Benutzerbild von BlackShark
 
Status: Offline
Beiträge: 201
Registriert seit: 29.03.2005
Ort: ZH
Alter: 24
Standard AW: PHP Login - 06.03.2007, 12:23

nunja. schlussendlich ist der link ja nicht nur für mich sondern für eine gesamte abteilung. und ich möchte ja nicht noch allen den firefox installieren. vorallem arbeiten wir hauptsächlich auf terminalservern und dort kommt uns bestimmt kein firefox drauf.

danke remix. werde ich gleich mal versuchen.


---
Wer später bremst ist länger schnell.
   
Mit Zitat antworten
AW: PHP Login
Alt
  (#6)
Erfahrener Benutzer
 
Benutzerbild von BlackShark
 
Status: Offline
Beiträge: 201
Registriert seit: 29.03.2005
Ort: ZH
Alter: 24
Standard AW: PHP Login - 06.03.2007, 12:46

also das mit dem neuen html hat super geklappt. danke für den tipp. kann ich sicherlich auch anderweitig noch verwenden. das einfügen von value auf der originalen php ist mir auch schon in denn sinn gekommen, jedoch für diese anforderung nicht das richtige.

besten dank nochmals..
gruss


---
Wer später bremst ist länger schnell.
   
Mit Zitat antworten
AW: PHP Login
Alt
  (#7)
Erfahrener Benutzer
 
Benutzerbild von pantheros
 
Status: Offline
Beiträge: 318
Registriert seit: 04.06.2006
Ort: zu Hause
Standard AW: PHP Login - 08.03.2007, 10:03

Na toll, super Variante:

Code:
[input type="hidden" name="login_username" value="XYZ"] 
[input type="hidden" name="login_password" value="XYZ"]
Das ist wohl nicht dein ernst?


"There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances."
 pantheros eine Nachricht über ICQ schicken pantheros eine Nachricht über MSN schicken  
Mit Zitat antworten
AW: PHP Login
Alt
  (#8)
Moderator
 
Benutzerbild von remix
 
Status: Offline
Beiträge: 678
Registriert seit: 15.01.2005
Ort: Oberbuchsiten
Alter: 36
Standard AW: PHP Login - 08.03.2007, 17:18

@pantheros:

Es geht ja nur darum, dass der Mitarbeiter (wohl in einem Intranet) sich durch Klick auf einen einfachen Link automatisch anmelden kann, ohne jedesmal die Benutzerdaten einzugegen. Und das soll natürlich auch auf mehreren Rechnern funktionieren -> also nichts mit Passwortmanager im Browser. Wenn Du davon ausgehst, dass derjenige, der diesen Link kennt und benutzt auch die Zugangsdaten kennt, ist das absolut kein Sicherheitsproblem. Es soll ja nur eine Vereinfachung des Logins sein und kein Schutzmechanismus, um das Passwort zu verbergen. Was meinst Du, wieviele solcher Dateien ich auf meinem Server in einem Passwortgeschützten Verzeichnis habe, um mich bei den diversesten Web-Diensten anzumelden? Ich logge mich mit einem Passwort auf meinen Server ein, und von dort gelange ich mit Hilfe dieser kleinen html-Geschichten auf jede gewünschte per Web-Formular gesicherte Seite mit einem einzigen Mausklick ohne weitere Tastatureingaben. Schlussendlich macht es doch keinen Unterschied, ob ich die Daten von Hand eingebe oder per JavaScript an das Formular sende. Das Prozedere ist immer das gleiche. Alles klar?


Dieses Posting wurde aus 100% rezyklierten Elektronen hergestellt
und kann für die Umwelt absolut unschädlich gelöscht werden.

Geändert von remix (08.03.2007 um 17:22 Uhr).
   
Mit Zitat antworten
AW: PHP Login
Alt
  (#9)
Erfahrener Benutzer
 
Benutzerbild von BlackShark
 
Status: Offline
Beiträge: 201
Registriert seit: 29.03.2005
Ort: ZH
Alter: 24
Standard AW: PHP Login - 08.03.2007, 18:52

klar ist das mein ernst. und es funktioniert wunderbar.
war eine super idee und genau das was ich gesucht habe.

genau halt wie remix gesagt hat.


---
Wer später bremst ist länger schnell.
   
Mit Zitat antworten
AW: PHP Login
 
Links zum gleichem Thema:
AW: PHP Login
Alt
  (#10)
Erfahrener Benutzer
 
Benutzerbild von pantheros
 
Status: Offline
Beiträge: 318
Registriert seit: 04.06.2006
Ort: zu Hause
Standard AW: PHP Login - 09.03.2007, 08:07

BlackShark,

Alles deine Sache, mal nebenbei bemerkt, dein Script ist sowieso ein riesen Sicherheitsloch, da kommts auf die hidden-tags so oderso nicht mehr drauf an ;-)


"There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances."
 pantheros eine Nachricht über ICQ schicken pantheros eine Nachricht über MSN schicken  
Mit Zitat antworten
AW: PHP Login
Alt
  (#11)
Moderator
 
Benutzerbild von remix
 
Status: Offline
Beiträge: 678
Registriert seit: 15.01.2005
Ort: Oberbuchsiten
Alter: 36
Standard AW: PHP Login - 09.03.2007, 09:17

Pantheros, du verstehst es wohl noch nicht ganz. Das Login wird nur lokal genutzt, und zwar auf Rechnern und bei Leuten, die die Zugangsdaten eh kennen. Es geht um eine vereinfachte lokale Anmeldung. Solange man diese Html-Datei nicht einfach so in's Internet stellt passiert überhaupt nichts!


Dieses Posting wurde aus 100% rezyklierten Elektronen hergestellt
und kann für die Umwelt absolut unschädlich gelöscht werden.
   
Mit Zitat antworten
AW: PHP Login
Alt
  (#12)
Erfahrener Benutzer
 
Benutzerbild von pantheros
 
Status: Offline
Beiträge: 318
Registriert seit: 04.06.2006
Ort: zu Hause
Standard AW: PHP Login - 09.03.2007, 09:41

Hi Remix,

Lokal stellt es kein Problem dar. Es ging bei meinem Posting (Nr. 10) auch nicht um die hidden tags, primär. Aber das ist auch jetzt egal. Grundsätzlich sollte man einfach wissen, dass hidden tags nicht für den Anwender bzw. Besucher "versteckt" sind. Das selbe gilt auch bei input type = password. Dass es dir klar ist, remix, ist mir schon bekannt - oder hoffe ich zumindest. Dieses Posting hier, kann als allgemeine Information für Neulinge angesehen werden.

Ich bitte darum, dass der Thread geschlossen wird, da die Frage beantwortet wurde und der Threadstarter (laut Posting Nr. 9) das Problem gelöst hat.

Danke. Bye


"There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances."
 pantheros eine Nachricht über ICQ schicken pantheros eine Nachricht über MSN schicken  
Mit Zitat antworten
Antwort



Unsere iB-Sponsoren:
itrain.ch
klubschule.ch
iB-Sponsor: inside-it.ch
GeschenkeNews: Geschenke der besonderen Art


Sponsor-Links:




Bitte beachtet das Angebot unserer Sponsoren:
iB-Sponsor: itrain.ch iB-Sponsor: klubschule.ch iB-Sponsor: inside-it.ch GeschenkeNews: Geschenke der besonderen Art


Lesezeichen