Portal > Foren > PHP > PHP-Programmierung > Login an Server
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 22.03.2006, 05:04 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard Login an Server

Hallo,

Also nach einer ganz ganz ganz langen Zeit habe ich mit ein Freund geschafft ein Script zu schreiben sich automatisch an ein bestimmten Server einloggt und Status abfragt.

Leider gelingt es uns nicht diesen mit Sessions umzuschreiben damit nachdem Login der LoginFeld verschwindet und man sich ausloggen muss. Auch auf der Adressen Leiste ist es als login.php?username=test&password=me zu sehen.

Würde es sehr gerne weiterschreiben nur mir ist unklar was ich da alles einsetzen kann. Eigentlich würde ich auch einwenig Hilfe brauchen.

Hier ist mal das Script
PHP-Code:
<?
if(isset($_GET["username"])&&isset($_GET["password"])||isset($_COOKIE["domain.de"]))
{
$socket=@fsockopen("81.38.18.618",34239);
if($socket)
{
fputs($socket,"GGGGNFFO ".$_GET["username"]." ".$_GET["password"]."\r\n");
$davinci=fgets($socket,100);
if(!strpos($davinci,"password"))
{
$davinci=fgets($socket,100);
$davinci=str_replace("Credits: ","",$davinci);
$davinci=substr($davinci,0,strpos($davinci," Counter"));
}
fclose($socket);
}
$socket=@fsockopen("34.353.845.382",35472);
if($socket)
{
fputs($socket,"LFSNINFO ".$_GET["username"]." ".$_GET["password"]."\r\n");
$tms=fgets($socket,100);
if(!strpos($tms,"password"))
{
$tms=fgets($socket,100);
$tms=str_replace("Credits left: ","",$tms);
$tms=substr($tms,0,strpos($tms,"; Credits"));
}
fclose($socket);
}
if($davinci>0||$tms>0)
{
?>
PHP-Code:
<?
if($tms>0)
{
echo "Hallo bei TMS";
?>
<?
}
if($davinci>0)
{
echo "Hallo bei Davinci";
?>
<?
}
}
if($davinci+$tms<1)
{
?>
Login Failed
<?
}
}
else
{
?>
NOT ALLOWED
<?
}
?>

Leider gottes ist mir auch nicht gelungen im Bereich Login Failed "Header("Location: index.php") }" weil es ansonsten auf eine Leere Seite weiterleitet und nicht im Index Bereich das ganze anzeigt.


Wäre für jeden Hilfe, Rat und Vorschlag dankbar.

LG
karabey
karabey ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.03.2006, 08:53 Nach oben    #2
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

da du scheinbar schon ein wenig PHP kannst, solltest du dir vielleicht mal das Tutorial anschauen.
Ansonsten ist dein gezeigter Quellcode recht unübersichtlich und strotz doch etwas vor fehlern... Beispiel:
?>
<?
Das macht keinen Sinn.
Schreib am anfang deines Skripts bitte "error_reporting(E_ALL);" und korrigiere alle auftretenden Fehler.
Ansonsten sollte dir der Link oben weiterhelfen.
__________________
I did it my way - Senseless-Blog
Weihnachtsgeschenk? Schülern helfen - Bodypainting Kalender für 2009
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.03.2006, 10:38 Nach oben    #3
Dejan Spasic
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 169
Standard

Zitat:
Zitat von WarrenFaith
Beispiel:
?>
<?
Ein Fehler ist das nicht unbedinng aber ein schlechter Stil.

@karabey

http://pear.php.net/package/HTTP_Request
http://de2.php.net/manual/de/ref.curl.php
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)
dejan_spasic ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.03.2006, 10:58 Nach oben    #4
Erfahrener Benutzer
 
Benutzerbild von PaterNoster
 
Registriert seit: 18.08.2005
Ort: Dortmund
Beiträge: 166
Standard

Und nur mal eben so am Rande eingeworfen:

Die Übermittlung der Zugangsdaten per $_GET kann man schon nicht mehr als Sicherheitsrisiko betrachten, das ist so, als wenn Du die Wohnungstür offen lässt und ein Schild aufstellst "Heute freie Bedienung".
PaterNoster ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.03.2006, 18:48 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard

Danke für eure Antworten. Wie ich auch oben erwähnt habe, habe ich wirklich sehr wenig ahnung von PHP. Logic ist leicht nur müsste es mit jemanden der Kentniss hat erweitern.

Wir haben das zusammengebaut indem wir nur gelesen und getestet haben. Die Abfrage am Server funktioniert 100% ohne Probleme aber natürlich habe ich Fehlern im Script. Nur die würde ich gerne mit hilfe von euch korrigieren und erweitern.

z.b.

Sollte ich statt "<?" dieses "<? php" verwenden? Und wie sollte ich den Login System mit Session lieber bauen? In diesen Script hinein oder außerhalb?

LG
Karabey
karabey ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.03.2006, 19:45 Nach oben    #6
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.379
Standard

Zitat:
Zitat von karabey
Sollte ich statt "<?" dieses "<? php" verwenden?
ja!

Denn je nach Konfiguration des Servers kann <? auch für andere Sprachen gelten!

<?php ist definitiv PHP

aber das ist nicht gemeint mit dem schlechten Stil


wenn du soviel PHP nutzt und nur hin und wieder HTML-Code ausgeben willst, dann nutze einfach ein echo.


// edit: ich wollte dir dein PHP-Code mal sauber posten, aber die Anzahl der geöffneten und geschlossen Klammern passt überhaupt nicht!
Rücke den Code doch bitte ein!



error_reporting
Du solltest zu Beginn des Skriptes folgendes stehen haben:
PHP-Code:
<?php
  error_reporting
(E_ALL);
?>
Dann werden dir Fehler im PHP-Code angezeigt. Dann weißt du, was du noch beseitigen musst.
http://de2.php.net/error_reporting
Ebenso kann man das auch in die config-Datei schreiben, wenn diese auf jeder Seite zu Beginn eingebunden wird.
Mögliche Fehler die dann auftreten und wie man sie beheben kann:
Notice: Use of undefined constant ...
Notice: Undefined variable ...
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!

Geändert von Jann Hendrik (22.03.2006 um 19:49 Uhr)
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.03.2006, 00:33 Nach oben    #7
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard

Also habe
PHP-Code:
<?php error_reporting(E_ALL); ?>
ganz am Anfang eingefügt nur sehe keine fehlern

Der Sinn des Scriptes ist es von zwei unterschiedlichen Servern restliche Credite abzufragen.

Ihr könnt mal den Script selbst testen. Für den User testscript wurde 1 Credit zugefügt.

Username: testscript
Passwort: testscript
Link: http://www.gsmcredits.com/php

Jetzt sieht der Script so aus

PHP-Code:
<?php error_reporting(E_ALL); ?> 
<?php
if(isset($_GET["username"])&&isset($_GET["password"])||isset($_COOKIE["domain.de"]))
{
$socket=@fsockopen("81.38.18.618",34239);
if(
$socket)
{
fputs($socket,"GGGGNFFO ".$_GET["username"]." ".$_GET["password"]."\r\n");
$davinci=fgets($socket,100);
if(!
strpos($davinci,"password"))
{
$davinci=fgets($socket,100);
$davinci=str_replace("Credits: ","",$davinci);
$davinci=substr($davinci,0,strpos($davinci," Counter"));
}
fclose($socket);
}
$socket=@fsockopen("34.353.845.382",35472);
if(
$socket)
{
fputs($socket,"LFSNINFO ".$_GET["username"]." ".$_GET["password"]."\r\n");
$tms=fgets($socket,100);
if(!
strpos($tms,"password"))
{
$tms=fgets($socket,100);
$tms=str_replace("Credits left: ","",$tms);
$tms=substr($tms,0,strpos($tms,"; Credits"));
}
fclose($socket);
}
if(
$davinci>0||$tms>0)
{
?>
<?php
if($tms>0)
{
echo 
"TMS: <b><font color=FF0000>".$tms."</font></b><br>";
?>
<?php
}
if(
$davinci>0)
{
echo 
"Davinci: <b><font color=FF0000>".$davinci."</font></b><br>";
?>
<?php
}
}
if(
$davinci+$tms<1)
{
?>
<br><center><font color="FF0000"><b>Login Failed</b></font><br>
</center>
<?php
}
}
else
{
?>
<br><center><font color="#FF0000"><b>Not allowed</b></font><br>
                        </p>
<?php
}
?>

Geändert von karabey (23.03.2006 um 00:37 Uhr)
karabey ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.03.2006, 09:11 Nach oben    #8
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.379
Standard

es macht keinen Sinn sowas zu schreiben:
Code:
?>
<?php
warum schließt du dort PHP und startest es sofort wieder?


und: rücke deinen Code ein, das ist echt hilfreich, wenn man versuchen will dort durchzusteigen!


// edit:
mal für dich als Beispiel:
PHP-Code:
<?php
  error_reporting
(E_ALL);

  if(isset(
$_GET["username"]) && isset($_GET["password"]) || isset($_COOKIE["domain.de"]))
  {
    
$socket fsockopen("81.38.18.618"34239);

    if(
$socket)
    {
      
fputs($socket"GGGGNFFO ".$_GET["username"]." ".$_GET["password"]."\r\n");
      
$davinci fgets($socket100);

      if(!
strpos($davinci"password"))
      {
        
$davinci fgets($socket100);
        
$davinci str_replace("Credits: """$davinci);
        
$davinci substr($davinci0strpos($davinci" Counter"));
      }

      
fclose($socket);
    }

    
$socket fsockopen("34.353.845.382"35472);

    if(
$socket)
    {
      
fputs($socket"LFSNINFO ".$_GET["username"]." ".$_GET["password"]."\r\n");
      
$tms fgets($socket100);

      if(!
strpos($tms"password"))
      {
        
$tms fgets($socket100);
        
$tms str_replace("Credits left: """$tms);
        
$tms substr($tms0strpos($tms"; Credits"));
      }

      
fclose($socket);
    }

    if(
$davinci>|| $tms>0)
    {

      if(
$tms 0)
        echo 
"TMS: <b><font color=FF0000>".$tms."</font></b><br>";

      if(
$davinci 0)
        echo 
"Davinci: <b><font color=FF0000>".$davinci."</font></b><br>";

    }

    if(
$davinci+$tms 1)
      echo 
'<br><center><font color="FF0000"><b>Login Failed</b></font><br>
</center>'
;

  }
  else
    echo 
'<br><center><font color="#FF0000"><b>Not allowed</b></font><br>
                        </p>'
;
?>
ich habe zwei kleine Sachen geändert - bitte teste das mal!


// edit: vergessenes $ eingefügt.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!

Geändert von Jann Hendrik (31.03.2006 um 10:58 Uhr)
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.03.2006, 02:14 Nach oben    #9
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard

Also diesmal habe ich eine Fehlermeldung

Notice: Use of undefined constant socket - assumed 'socket' in /var/www/web50/html/php/login.php on line 32

Warning: fgets( supplied argument is not a valid stream resource in /var/www/web50/html/php/login.php on line 32
Davinci: 1,


Zitat:
und: rücke deinen Code ein, das ist echt hilfreich, wenn man versuchen will dort durchzusteigen!
Willst du den unmodifizierten Code haben mit die Server IP`s?!

Geändert von karabey (24.03.2006 um 02:21 Uhr)
karabey ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.03.2006, 02:16 Nach oben    #10
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Da hat Jann ein Dollarzeichen ($) vergessen
PHP-Code:
$tms fgets(socket100); 
muss
PHP-Code:
$tms fgets($socket100); 
sein.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.03.2006, 02:25 Nach oben    #11
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard

Stimmt danke mal hat auch gut funktioniert.

Nur ich sehe nirgendwo den Beistrich beim Davinci: 1,
karabey ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.03.2006, 02:31 Nach oben    #13
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard

Ich meine nach der Ausgabe kommt die Meldung

Davinci: 1,

Nur im Code sehe ich nicht wo ich es eingefügt habe?!
karabey ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.03.2006, 03:51 Nach oben    #14
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard

Könnte mir jemand da auch bitte behilflich sein

PHP-Code:
    if($davinci>|| $tms>0
    { 

      if(
$tms 0
        echo 
"TMS: <b><font color=FF0000>".$tms."</font></b><br>";
{
        include(
"tmsfile.php");}

      if(
$davinci 0
        echo 
"Davinci: <b><font color=FF0000>".$davinci."</font></b><br>"
{
        include(
"davincifile.php");}

   }

    if(
$davinci+$tms 1
      echo 
'<br><center><font color="FF0000"><b>Login Failed</b></font><br> 
</center>'


  } 
  else 
    echo 
'<br><center><font color="#FF0000"><b>Not allowed</b></font><br> 
                        </p>'

Obwohl TMS nicht aufgerufen wird erscheint include("tmsfile.php") ??!

Geändert von karabey (24.03.2006 um 05:13 Uhr)
karabey ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.03.2006, 21:03 Nach oben    #15
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Hallo,
Deine Klammersetzung ist nicht korrekt.

Du öffnest die Klammer zu spät.
Mach mal das hier
PHP-Code:
if($davinci>|| $tms>0
{
    if(
$tms 0
    {
        echo 
"TMS: <b><font color=FF0000>".$tms."</font></b><br>";
        include(
"tmsfile.php");
    }

    if(
$davinci 0
    {
        echo 
"Davinci: <b><font color=FF0000>".$davinci."</font></b><br>"
        include(
"davincifile.php");}
    }

    if(
$davinci+$tms 1
    {
        echo 
'<br><center><font color="FF0000"><b>Login Failed</b></font><br> 
</center>'

    } 
    else 
    {
         echo 
'<br><center><font color="#FF0000"><b>Not allowed</b></font><br> </p>';
    }

und teste es aus.

Grüße, Ben.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.03.2006, 05:56 Nach oben    #16
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard

Super hat auch funktioniert. Ich weis nicht wieso ich immer wieder solche kleine sachen auslasse oder besser gesagt wieso komme ich nicht drauf?!

Eine allerletzte Frage hätte ich noch. Wie könnte ich in dem Script ein Login Script mit Session einbauen?

PHP-Code:
    if($davinci+$tms 1
{
      echo 
'<br><center><font color="FF0000"><b>Login Failed</b></font><br></center>'
  } 
  else
{
    echo 
"<form action=\"login.php\" method=\"GET\">";
    echo 
"<td align=\"right\" height=\"20\">Username";
    echo 
"<input type=\"text\" onFocus=\"this.style.background='FFFFFF'\" onBlur=\"this.style.background='F9F9F9'\" size=\"20\" name=\"username\">";
    echo 
"<span style=\"color:AAAAAA\">Password</span>";
    echo 
"<input type=\"password\" onFocus=\"this.style.background='FFFFFF'\" onBlur=\"this.style.background='F9F9F9'\" size=\"20\" name=\"password\">";
    echo 
"<input type=\"submit\" style=\"padding:0;background-color:FFBA27;border:0;color:FFFFFF;width:25;font-weight:bold\" value=\"GO\"></form>"

Der Testscript steht auch unter http://www.gsmcredits.com/php/index.php

Geändert von karabey (31.03.2006 um 06:02 Uhr)
karabey ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.03.2006, 14:45 Nach oben    #18
Neuer Benutzer
 
Registriert seit: 11.03.2006
Beiträge: 29
Standard

Ist es nicht auch besser bei so etwas Post anstatt GET zu nehmen?
lycoos ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.03.2006, 23:54 Nach oben    #20
Neuer Benutzer
 
Registriert seit: 19.03.2006
Beiträge: 17
Standard

Es werden ja Daten verlangt?! Bekomme ich die daten per "Post" Befehl??

Also das Login Script mit Session sieht mir echt schwer aus... Würde es nicht zusammen bringen in den Script reinzuschreiben.

Was für möglichkeiten gibt es für Login Formular die nach Login verschwinden?!

Geändert von karabey (31.03.2006 um 23:57 Uhr)
karabey ist offline