# "Zellen" aus Datenbank für LogIn rauslesen //PhP



## Thoma (30. Dezember 2016)

Hallo erstmal, ich habe mich gerade eben wegen diesem Thema registriert.
Und zwar ist meine Frage: Wie kann ich (wie schon oben erwähnt) "Zellen" aus einer MySQL-Datenbank herauslesen, um sie dann mit den Eingaben des Benutzers zu vergleichen?
Oder gibt es eine andere, viel leichtere Methode?
Hier mein Script... ich weiß nicht, ob ihr damit viel anfangen könnt...

```
<?php

$nm = mysql_real_escape_string($_GET["name"]);
$pw = mysql_real_escape_string($_GET["pass"]);


//echo "<b> Benutzereingabe_Name: </b>";
//echo $nm;
//echo "<BR>";
//echo "<b> Benutzereingabe_Passwort: </b>";
//echo $pw;
//echo "<BR>";
//echo "<BR>";

$db = mysqli_connect("localhost", "root", "",  "test");

if (!$db)
    {
    exit("Verbindungsaufbau fehlgeschlagen: ".mysqli_connect_error());
    }
   
if($db)
    {
        echo "<b>Erfolgreich mit Datenbank verbunden! </b><br />";
        echo "<BR>";
    }

mysql_select_db("test") or die(mysql_error());

$SQL =" SELECT benutzername, passwort FROM login WHERE passwort='". $pw ."' AND beutzername='". $nm ."'";

$result = mysql_query($SQL);


//while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
//{
    //echo "<b>Benutzername_Datenbank: </b> ";
    //echo $row["benutzername"] . "<br />";
    //echo "<BR>";
    //echo "<b>Passwort_Datenbank: </b>";
    //echo $row["passwort"] . "<br />";
    //echo "<BR>";
       
//}

//if ($dbpw == $pw && $dbnm == $nm)
//{ 
    //echo "Eingabe erfolgreich!";
//}
//else
//{
    //echo "Falsche Eingabe";
//}
//mysql_free_result($result);   

//while($row = mysqli_fetch_object($dbn))
//{
  //echo $row->benutzername;
//}
// https://www.administrator.de/frage/php-vergleich-daten-formular-datenbank-schl%C3%A4gt-fehl-221805.html
//    if ($row[1] === $_GET["name"])
    //  {
    //     verbinde mit Auswahl;
    //  }


//$db_erg = mysqli_query( $db, $SQL );

//if (! $db_erg)
//{
    //  die("Ungültige Abfrage: " . mysqli_error());
//}


?>
```

Das Auskommentierte waren Ideen, welche mir aber auch nicht weiter geholfen haben...


----------



## Yaslaw (30. Dezember 2016)

Zuerst einmal allgemein
*mysql_* ist veraltet. Du solltest mysqli_* verwenden*

Was hat an der Version mit mysql_fetch_array()  nicht funktioniert?


----------



## Thoma (30. Dezember 2016)

@Yaslaw 
Durch die while-Schleife mit dem array bekomme Ich ja nur die Daten ausgegeben, ich möchte aber den Datenbankinhalt so herausbekommen, dass ich Ihn mit den Eingaben vergleichen kann.

Hättest du da vielleicht eine Lösung?

Habe keine Ahnung wie ich weitermachen soll...

LG Thoma


----------



## DerKleene1 (30. Dezember 2016)

Eben mal so schnell geschrieben. Nicht genau auf Fehler geachtet, sollte aber klappen.
Sind abere andere Daten (Datenbank usw) als Du verwendest.

```
$db = new mysqli("localhost", "", "", "test");

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if(isset($_GET['name'])) $nm = $db->real_escape_string($_GET["name"]); else $nm = "";
    if(isset($_GET['pass'])) $pw = $db->real_escape_string($_GET["pass"]); else $pw = "";

    $SQL =" SELECT username, password FROM users WHERE password='". $pw ."' AND username='". $nm ."'";

    $result = $db->query($SQL);

    while($row = mysqli_fetch_array($result)){
        $dbpw = $row["password"];
        $dbnm = $row["username"];
    }

    if ($dbpw == $pw && $dbnm == $nm){
        echo "Eingabe erfolgreich!";
    }else{
        echo "Falsche Eingabe";
    }
    mysqli_free_result($result);
```


----------



## Thoma (31. Dezember 2016)

Vielen Dank für deine Antwort @DerKleene1 !
Nur kommen bei mir noch ein Paar Fehlermeldungen:
Zum einem:
*mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given* bei diesem Statement *$result = $db->query($SQL);*

Dann noch :
*Undefined variable: dbpw* hier * if ($dbpw == $pw && $dbnm == $nm){*

Und noch :
*mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given *bei dem Statement:*  mysqli_free_result($result);*

Ich hoffe, du kannst mir helfen...


----------



## Thoma (31. Dezember 2016)

Ok, kurzes Update!

Es kommt nur noch ein Fehler:
*Undefined variable: dbpw* hier *if ($dbpw == $pw && $dbnm == $nm){*


----------



## Thoma (31. Dezember 2016)

Diese Fehlermeldung kommt nur, wenn die Eingabe falsch ist.
Sprich bei dem else


----------



## DerKleene1 (31. Dezember 2016)

Gerade wenig Zeit, aber hier mal eine überarbeitete Version:

```
if(isset($_GET['name']) && isset($_GET['pass'])){
      $nm = $db->real_escape_string($_GET["name"]);
      $pw = $db->real_escape_string($_GET["pass"]);

      $SQL =" SELECT username, password FROM users WHERE password='". $pw ."' AND username='". $nm ."'";

      if($result = $db->query($SQL)){
        $rowcount=mysqli_num_rows($result);
        if($rowcount == 1){
          while($row = mysqli_fetch_array($result)){
              $dbpw = $row["password"];
              $dbnm = $row["username"];
          }
          if ($dbpw == $pw && $dbnm == $nm){
              echo "Eingabe erfolgreich!";
          }
        }else{
            echo "Falsche Eingabe";
        }
      }
      mysqli_free_result($result);
    }else{
      echo "Bitte Name und Passwort eingeben!";
    }
```


----------



## Thoma (31. Dezember 2016)

Vielen Dank!! Es funktioniert!
2 Fragen hätte ich dennoch:
1. Für was steht dieses Statement

else{
      echo "Bitte Name und Passwort eingeben!";
    }
2. Wie würde ich das Ganze jetzt verschlüsseln? (Mit md5 am besten)


----------



## sheel (31. Dezember 2016)

Hi

falls du gerade irgendein PHP-Buch/Tutorial/sonstwas liest, das dir die Sachen so erklärt, bitte gleich entsorgen. (Es gibt leider _sehr_ viele schlechte und/oder veraltete Anleitungen zu PHP).

Dass es die mysql_ - Funktionen, die du vorher verwendet hast, gar nicht mehr gibt, hat dir ja schon jemand gesagt. Sie wurden entfernt, nachdem man mehrere Jahre schon gewusst hat, dass sie am Ende sind. Mit anderen Worten, Code damit funktioniert einfach nicht mehr. Die letzte PHP-Version, die sie noch hatte, ist auch nicht mehr supported.

Der nächste Problempunkt ist, dass MD5 seit 20 Jahren  nicht mehr so sicher ist, wie es ein sollte. Nimm bcrypt (http://php.net/manual/de/function.password-hash.php) (Außerdem ist MD5 keine Verschlüsselung, war es auch nie).


----------



## DerKleene1 (31. Dezember 2016)

Habe das ganze auch mal als PDO gemacht.
Stehen auch Kommentare drin.
Und danke @sheel Du hast vollkommen recht. Ich würde dies auch ganz anders aufbauen, aber wenn er erst mal so lernen kann, sollte dies ausreichen. Man weiß ja auch nicht wie das ganze drumherum aussieht. Aber ich denke er sollte nun genug Vorschläge haben.

```
$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
    $opt = array(
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    );
    $db = new PDO($dsn,'root','root', $opt);


    if(isset($_GET['name']) && isset($_GET['pass'])){
      $nm = $_GET["name"];
      $pw = $_GET["pass"];
      $pw = password_hash($pw, PASSWORD_DEFAULT); //Das eingegebene Passwort wird verschlüßelt. Da dies auch verschlüßelt in der DB liegen sollte. Würde dies aber eher per $_POST machen.

      $pdo ="SELECT username, password FROM users WHERE password = :passwort AND username = :username";
      $statement = $db->prepare($pdo);
      $statement->execute(array(':passwort' => $pw, ':username' => $nm));

      $anzahl_user = $statement->rowCount();

      if($anzahl_user == 1){
        while($row = $statement->fetch()) {
           $dbpw = $row["password"];
           $dbnm = $row["username"];
        }
        if ($dbpw == $pw && $dbnm == $nm){
            echo "Username und Passwort stimmen überein!"; //Name und PW stimmen überein.
        }
      }else{
        echo "Username oder Passwort nicht vorhanden oder Falsch."; //Name oder PW nicht gefunden.
      }
    }else{
      echo "Bitte Name und Passwort eingeben!"; //Wenn kein GET vorhanden ist.
    }
```


----------



## Thoma (31. Dezember 2016)

Ok, vielen Dank für eure Antworten!
Aber.. Was ist eine PDO ? (Es ist wahrscheinlich offensichtlich, nur kenne ich nicht diesen Begriff)
Wegen dem Mysql und md5.. Ich musste mich in das Thema ganz neu hineinarbeiten.


----------



## Thoma (31. Dezember 2016)

```
<!doctype html>

<html lang="de">



  <head>
 
    <link href="designlogin.css" rel="stylesheet">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Zentrale Terminvergabe und Telefonzentrale</title>
  </head>
  <body>

  <div id="starth1">
  <img id="startimg" width="5%" height="5%" align="right" src="bmw-logo1.png" alt="bmwlogo">
    <h1>Zentrale Terminvergabe und Telefonzentrale</h1>   
   
    </div>
    <center id="login">
    <h2> LogIn </h2>
    <form id="formular" action="loginpdo.php" method=get">
        <table>
            <tr>
                <td>Name:</td>
                <td><input type="text" name="name" /></td>
            </tr>
            <tr>
                <td>Passwort: </td>
                <td><input type="password"  name="pass" /></td>
            </tr>           
            <tr>
                <td></td>               
                <td>
                <input type="submit" value="anmelden" />
                </td>
            </tr>           
        </table>
    </form>
   
    </center>

  </body>

</html>
```

So würde btw mein HTML script aussehen..


----------



## sheel (31. Dezember 2016)

@derkleene Dein Code ist doch in Ordnung...? Was nicht mehr verwendet werden sollte usw. war eher an Thoma gerichtet, alle anderen hier wissen es ja offensichtlich schon.

@Thoma
Ich weiß, etwas umsonst gelernt zu haben ist sehr ärgerlich. Aber in dem Fall ist es das eben. Funktionen zu verwenden, die es nicht mehr gibt, hilft niemandem.

PDO und Mysqli sind einfach gesagt zwei Funktionensammlungen, die beide die alten Mysql-Funktionen ersetzen. Man braucht nur eine davon.


----------



## Thoma (31. Dezember 2016)

Ok... Und kann ich dein Quelltext, welcher mir @DerKleene1 geschickt hat einfach übernehmen? @sheel


----------



## EuroCent (31. Dezember 2016)

@Thoma
Wenn du dich nicht in PDO einarbeiten möchtest, dann empfehle Ich dir MySQLi 

Ansonsten gibt es sicherlich genug Tutorials bei YT, die Ich dir empfehlen kann 
Bei mysqli sind manche Parameter vertauscht, beispielsweise beim mysqli_query(parameter, sql-state) da muss er st der RessourceID und erst dann kommt der Statement.


----------



## Thoma (7. Januar 2017)

Hallo ich bins nochmal!
Ich habe mich jetzt ein wenig erkundigt und habe den Quelltext von @DerKleene1 übernommen!(Danke nochmal dafür).
Nur wird bei mir in allen Fällen *Username oder Passwort nicht vorhanden oder Falsch. *ausgegeben!
Könnt ihr mir dabei helfen?
Und heißt das, dass ich in der Datenbank das Passwort schon verschlüsselt eingeben muss?

MfG Thoma


----------



## DerKleene1 (7. Januar 2017)

Hallo @Thoma,

ich Zitiere mal aus meinen Post:


> ```
> $pw = password_hash($pw, PASSWORD_DEFAULT); //Das eingegebene Passwort wird verschlüßelt. Da dies auch verschlüßelt in der DB liegen sollte. Würde dies aber eher per $_POST machen.
> ```



Ein Passwort sollte niemals unverschlüsselt in einer DB gespeichert werden.
Informationen zum password_hash findest Du hier: http://php.net/manual/de/function.password-hash.php

Zum testen ob das Script ohne Verschlüsselung funktioniert, kannst Du diese Zeile ja mal auskommentieren,
dann sollte es mit Klartext Passwort gehen.

Und wie gesagt überlege Dir ob du das FORM nicht lieber mit der Methode POST anstatt GET machen willst, damit keiner den Username und Passwort in der Adresszeile mitlesen kann.
Infos dazu findet man genug bei Google, hier mal ein Beispiel:
http://foobarblog.net/blog/get-und-post-unterschiede-und-anwendungen-11/


----------



## DerKleene1 (7. Januar 2017)

Mit Post wäre es folgendes:

```
<form id="formular" action="loginpdo.php" method="POST">
```
und:

```
$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$db = new PDO($dsn,'root','root', $opt);


if(isset($_POST['name']) && isset($_POST['pass'])){
  $nm = $_POST["name"];
  $pw = $_POST["pass"];
  $pw = password_hash($pw, PASSWORD_DEFAULT); //Das eingegebene Passwort wird verschlüßelt. Da dies auch verschlüßelt in der DB liegen sollte.

  $pdo ="SELECT username, password FROM users WHERE password = :passwort AND username = :username";
  $statement = $db->prepare($pdo);
  $statement->execute(array(':passwort' => $pw, ':username' => $nm));

  $anzahl_user = $statement->rowCount();

  if($anzahl_user == 1){
    while($row = $statement->fetch()) {
       $dbpw = $row["password"];
       $dbnm = $row["username"];
    }
    if ($dbpw == $pw && $dbnm == $nm){
        echo "Username und Passwort stimmen überein!"; //Name und PW stimmen überein.
    }
  }else{
    echo "Username oder Passwort nicht vorhanden oder Falsch."; //Name oder PW nicht gefunden.
  }
}else{
  echo "Bitte Name und Passwort eingeben!"; //Wenn kein POST vorhanden ist.
}
```

Sollte nichts vergessen haben


----------



## Thoma (7. Januar 2017)

Dankeschön!
Ich habe das Ganze jetzt mit POST versucht und auch die Zeile auskommentiert, nur kommt immer noch das Gleiche...

Ich habe auch seit neuestem das Problem, dass mein LogIn Formular schon ausgefüllt ist (gelblicher Hintergrund).

Könnte das das Problem sein?


----------



## DerKleene1 (7. Januar 2017)

Dann lasse Dir mal per Echo die Variablen ausgeben, und schaue ob und/oder was übertragen wird und auch das richtige aus der DB gelesen wird. Funktionieren tut es dies habe ich getestet.

Wegen dem ausgefüllten: http://www.w3schools.com/tags/att_input_autocomplete.asp


----------



## Thoma (8. Januar 2017)

Also...
Ich habe die Funktion "autocomplete" verwendet, nur funktioniert sie bei anderen Formularen nur nicht beim LogIn..
Jedes mal wenn ich den LogIn aufrufe, sind Name & Passwort schon ausgefüllt. 
Der Name mit "%" und das Passwort mit einem Passwort, welches ich verwendet hatte, als ich einen eigenen Account bei PhPMyAdmin erstellt habe, diesen habe ich wiederrum gelöscht.
Das Problem ist, dass mir keine Daten an meine loginpdo2.php 
gesendet werden und ich glaube, dass diese ausgefüllten Felder irgendwas damit zu tun haben.


----------



## Thoma (11. Januar 2017)

Hallo, ich bin's wieder und zwar wie kann ich Seiten so veschlüsseln etc. , dass sie nur über den LogIn zu öffnen sind?


----------



## DerKleene1 (11. Januar 2017)

Auf die schnelle: Mit sessions
Infos: http://php.net/manual/de/session.examples.basic.php


----------



## Thoma (12. Januar 2017)

Vielen Dank!
Nur halte ich nicht viel von Websiten..
Könnten Sie es mir anhand meines LogIns nochmal genauer erklären?


----------



## sheel (12. Januar 2017)

Thoma hat gesagt.:


> Nur halte ich nicht viel von Websiten..


Nur zur Info, das hier ist auch eine. 
Die offizielle Doku von PHP zu lesen sollte nicht zu viel verlangt sein.


----------



## Thoma (12. Januar 2017)

Du hast ja Recht.. Nur habe ich momentan sehr viel zu tun, denn dieses "Projekt" ist ein Seminarkurs und morgen muss ich den "Prototyp" präsentieren!


----------



## Yaslaw (12. Januar 2017)

Thoma hat gesagt.:


> Vielen Dank!
> Nur halte ich nicht viel von Websiten..
> Könnten Sie es mir anhand meines LogIns nochmal genauer erklären?


Sorry. Aber ein wenig eigeninitiative würde nicht Schaden. Wenn ich sowas lese, hab ich grad ganz spontan keine Lust zu helfen.


----------



## Thoma (12. Januar 2017)

Ihr habt ja Recht!


----------



## Thoma (17. Mai 2017)

Hier bin Ich wieder und zwar wollte Ich euch fragen wie Ich meine Session-ID auf eine andere Seite bekomme. Damit man es sich vorstellen kann, habe Ich hier den Quelltext:

```
if ($dbpw == $pw && $dbnm == $nm){
         session_start();
             $_SESSION['id'] = true;
              header("Location: ../auswahl.php");
             exit();
```
Wenn das Passwort und der Benutzername richtig ist setzt es die ID auf true.
Auf den jeweiligen Seiten habe Ich dann eine Abfrage gemacht ob diese ID auf true gesetzt wurde.
Hier der Quelltext:

```
session_start();
//$_SESSION['id'] = true;
   if (!isset($_SESSION['id']))
  {      
       header ("Location: LogIn/LogIn.php");
       exit();
   }
```
Nur wird diese ID nicht auf die andere Sewite übertragen, könnt Ihr mir vlt helfen?


----------



## EuroCent (17. Mai 2017)

Tipp: 
	
	
	



```
session_id();
```


----------



## Thoma (17. Mai 2017)

EuroCent hat gesagt.:


> Tipp:
> 
> 
> 
> ...


Meinst du bei der Abfrage, also beim 2. Quelltext


----------



## EuroCent (17. Mai 2017)

Wenn Du die Session-ID auslesen möchtest, geht es am schnellsten und am einfachsten mit 
	
	
	



```
session_id();
```
 da du sie ja auf einer nächsten Seite haben möchtest, musst du es per Formular mit übergeben, beispielsweise als Hidden-Feld 
	
	
	



```
<input type="hidden" name="sid" value="[SESSION_ID]" />
```


----------



## Thoma (17. Mai 2017)

EuroCent hat gesagt.:


> Wenn Du die Session-ID auslesen möchtest, geht es am schnellsten und am einfachsten mit
> 
> 
> 
> ...


Muss Ich den Button dann in die selbe Seite schreiben, in der auch der Anmelde-Button ist?


----------



## sheel (17. Mai 2017)

Da ist imho etwas Verwirrung im Spiel..., ich glaub, Thoma will nicht die Session-ID, sondern nur einen (davon unabhängigen) Eintrag, der zufällig ID heißt. ... anders nennen würde nicht schaden.


----------



## EuroCent (17. Mai 2017)

Dann hab Ich dass wohl missverstanden 
Sorry Thoma


----------



## Thoma (17. Mai 2017)

Ich will einfach den Wert, der hier drin steht:

```
$_SESSION['id'] = true;
```
auf eine andere Seite bringen, da Ich auf der anderen Seite ja eine Abfrage mache, ob diese Variable true oder false ist.


----------



## sheel (17. Mai 2017)

Wie bereits gesagt, nenns erstens mal nicht id.
Keine Ahnung ob PHP damit ein Problem hat, aber wundern würds mich nicht.
Falls nicht wirds zumindest für uns Menschen klarer.


----------



## Thoma (17. Mai 2017)

Hab sie jetzt umbenannt, die Session-Variable wird dennoch icht übertragen...


----------



## EuroCent (17. Mai 2017)

Wenn Du nur den Wert einer Session auslesen möchtest, sollte es mit:

```
$sess = (isset($_SESSION['id'])) ? $sess = $_SESSION['id'] : $sess = '';
echo $sess;
```

Ich verwechsel immer mal : mit ? an welcher stelle es kommt 
Falls es nicht klappt

```
$sess = (isset($_SESSION['id'])) : $sess = $_SESSION['id'] ? $sess = '';
echo $sess;
```


----------



## sheel (17. Mai 2017)

@EuroCent
Beides Unsinn... wenn schon dann

```
$sess = isset($_SESSION['id']) ? $_SESSION['id'] : '';
```
(auch wenn die obere deiner Varianten sogar funktionieren würde, aber sinnvoll ist was Anderes.)

Nur ist das überhaupt nicht das Problem... (zu dem ich grad keine Idee habe...)


----------



## EuroCent (17. Mai 2017)

@sheel
Ach... verdammt, Ich wusste es 
Vielen Dank 

Dann scheint bei der Speicherung seiner Session etwas nicht zustimmen.
Er soll mal schauen ob überhaupt eine Session gespeichert wurde.

Dies sollte er ja über den Browser ermitteln können.

Zumindestens geht es über den FF und Chrome sehr gut


----------



## Thoma (28. Juni 2017)

Hallo!
Ich habe in 2 Tagen meine Präsentation über dieses Programm.
Nun haben wir heute die Portfreigabe auf allen PCs bekommen, weswegen ich so spät frage...
Und zwar haben wir eine Onlinedatenbank und Ich weiß nicht wie ich meine Php-Dateien über den Onlineserver öffne. Wenn ich den Host als Ersatz für "localhost" nehme, gibt der Internetbrowser aus: "Fehler: Netzwerk-Zeitüberschreitung". 
Bitte um Hilfe, danke im Vorraus!


----------



## sheel (28. Juni 2017)

Mehr Details bitte:

Also dein Computer und der Server sind nicht das selbe. (oder? Wenn ja, warum soll localhost dann funktionierei?)

Welche Verbindungsdaten hast du vom Server (IP, Hostname, Port, Irgendwas...) (echte Daten würden helfen, um Privatnetze usw. zu erkennen. Keine Sorge, das reicht nicht um den Server zu hacken oder sonstwas)

Welche IP und Netmask hat dein Computer, da wo die Präsentation dann sein soll?

Kann der Server mit ping erreicht werden?


----------



## Thoma (28. Juni 2017)

Also.. wir haben uns über 
freesqldatabase.com eine kostenlose Datenbank für 30 Tage geholt, dazu habe Ich dann per Email die Daten (username, passwort, host (sql11.freesqldatabase.com)) bekommen. Davor habe Ich nur mit dem localhost von XAMPP gearbeitet. Nun weiß ich nicht wie Ich meine Php Daten nicht über localhost, sonder über diese Datenbank öffne


----------



## Thoma (28. Juni 2017)

Also... Die Verbindung zu der Onlinedatenbank habe Ich mit 
$db = mysql_connect("host, name, passwort)... 
hinbekommen.. Meine Frage ist, wie öffne Ich meine php Dateien, wenn sie nicht über localhost geöffnet werden sollen, das heißt, normalerweiße öffne ich meine php-Dateien wenn ich XAMPP starte und im Browser die Internetadresse eingib, welche mit localhost/.../.. beginnt. Aber wie mache Ich das jetzt mit dem Onlineserver?


----------



## sheel (28. Juni 2017)

a) Also, es ist kein Schulserver auf dem das laufen muss. Warum dann überhaupt online und nicht mit Xampp?
b) Wofür waren die Portfreigaben dann gut? Könnte es zufällig sein, dass die Lehrer doch irgendwas mit den Schulgeräten wollen, und du das nicht mitbekommen hast...?
c) Diese erwähnte Seite bietet Datenbanken an, mehr nicht. PHP hat damit nichts zu tun. _Das hilft dir nicht_, um Xampp loszuwerden. Wenn es wirklich nicht lokal sein soll, und du keinen anderen Computer zum verwenden hast, gibt es mehr oder weniger schlechte andere Freehoster (die auch Apache+PHP haben), oder eben was bezahltes.

Und es wäre, für später, empfehlenswert, dass du die nötige Software einmal ohne Xampp installierst und zusammen zum laufen bringst ... vielleicht hilft dir das ja, den Zusammenhang besser zu verstehen. Apache, PHP, Mysql, Phpmyadmin.


----------



## EnesE (27. Juli 2017)

Ich empfehle dir http://square7.ch da hast du einen Webspace und mehrere Datenbanken gratis. Dort gibt es aber keine Internetseite worüber du die Dateien hochladen kannst die Dateien musst du entweder dann über filezilla oder über den Explorer in Windows (ftp://%Adresse zum server%) hochladen.


Ansonsten empfehle ich dir "All-inkl" fda hast du für 5€ im Monat genügend Speicher, Datenbanken, FTP Accounts, webftp, Email Adressen, subdomains und 3 Domains Also zB hallo.de oder wiegehts.eu etc diese Kosten auch nichts extra


----------

