Automatisch PHP Datei erstellen

[quote=„kerbination“]$filename = $_SESSION["demo_nickname"].'.html';

ungetestet - und auch nur weil Weihnachten ist vorgekaut.[/quote]

Danke, klappt einwandfrei :slight_smile: :ps:

Naja der Nickname sollte wohl auch immer einzigartig sein :open_mouth:

Du solltest dichd ennoch mit den Grundlagen auseinandersetzen - das dauert zwar ein bisschen, doch gerade solche Kleinigkeiten bewahren einen dann vor stundenlangem verzweifelten Rumprobieren und Suchen :wink:

Danke, ich habe bisher das was ich kann mir aus Tutorials zusammen gelernt, und ein klein wenig helfen mir meine Java Kenntnisse.

Simple Sachen wie ein Gästebuch, LoginSysteme bekomme ich hin, auch ein kleines Forum habe ich schon geschafft :smiley:
Ich probiere halt immer was neues aus und versuche, und schaffe es auch letzendlich, zu verstehen :wink:

Nur mit der Syntax stehe ich vor allem auf’m Kriegsfuß :smiley:

achte bitte drauf, dass nicht bel. user x dir bel. code y ind php-file z schreibt und ausführt (wie chrisb schon erwähnte)

Ich hab das ganze einfach mit:

$inhalt = htmlspecialchars($_POST["inhalt"]);
gelöst an den Stellen wo der Teil in die DB geschrieben wird. Würde das ausreichen oder sollte man da einen anderen Weg wählen?

es geht nicht nur um SQL-injection
wenn ein beliebiger nutzer dir ein Skript einstellt das bspw. deinen gesamten content löscht ist das nicht so lustig, oder?
Oder spam emails verschickt (verstößt bestimmt auch gegen nutzungsrichtlinien)

Ja aber wie soll er den ausführbaren Code in die Datei schreiben lassen, wenn ich mit htmlspecialchars die Daten erst in die DB schreibe und von dort in die Datei?

Hi,

so auf den ersten Blick scheind es sicher … da man ja kein <?php machen kann (das < würde ja entfernt bzw. “unnützlich” gemacht werden). Aber es gib bestimmt noch eine kleine lücke … vorallem wenn du sagen würdest für was du das eigentlich brauchst können wir dir gezielter tipps geben …

Wenn du es z.b. nur verwenden willst um nen Status von nem user auszugeben kannst du ganz einfach eine andere Dateiendung z.b. “.txt” nehmen (wenn du umbedingt eine datei willst) denn .txt datein werden eigentlich nicht durch php interpreter geschickt (außer du hast eine ausnahme durch .htaccess gemacht)…

lg flo

Es handelt sich hierbei in erster Linie auch nur etwas für mich selber sogesehn, ich mache mir im moment eine kleine Seite auf der ich meine neu gewonnen Erfahrungen etc. testen will, bevor ich später unvorbereitet was richtiges starte.

Das aktuelle soll eigentlich ein ganz normales Userprofil sein.
Im Moment sieht es halt so aus, das bei der Registrierung einmal ein Account in einer Account table geschrieben wird. Dabei sind halt die üblichen Felder wie Nickname, Name, Email vergeben. Aber auch Spalten mit den Namen “head” “persoenliches” “sonstiges”.
In “head” wird als standart immer etwas in der art

eingetragen, darin versteckt sich der CSS Code und diverese kleine andere Dinge.
In “persoenliches” kann über ein Formular was beliebiges eingetragen werden was dann halt über htmlspecialchar in der Spalte landet beim jeweiligen User. Gleiches gilt für “sonstiges”.
Das das natürlich nicht viele moeglichkeiten sind Angaben über einen User zu erstellen ist mir klar, mir geht es einzigst erstmal um das Grundprinzip :wink:

Beim klick auf Speichern wird dann der Inhalt den man für persoenliches und sonstiges eingetragen hat, erst in die DB geschrieben und danach die Datei

erstellt in der dann die User Seite sichtbar wird mit den Inhalten aus der DB.
Natürlich wird im oberen Teil der Seite bei Allgemeines der Nickname, Name, Vorname durch die beim Login erstellte Session ausgegeben.
Bsp:

Hallo <?php echo $_SESSION["user_nickname"]; ?>. Name: <?php echo $_SESSION["user_name"]; ?>.

Mein Problem desweiteren ist natürlich, dass ich z.B. in der Stunde nur ja um die 200Socketzugriffe hab (ja bin bei square7). Heißt also, wenn ich 20User hätte, und jeder 10x seine Seite in der Stunde verbessert, ändert, hab ich ein Problem ;D

Ich denke es gibt eine durchaus inteligentere Idee als meine dies zu lösen :open_mouth:

Hi,

warum das Script wo ich dir hier gepostet habe verbraucht keinen einzigen Socket zugriff d.h. es läuft auch auf bplaced also hier …

^^ schlauer satz xD läuft auf bplaced also hier XD… :ps:

aber eigentlich wenn dus sowieso in der Datenbank hast warum erstellst du dann eine Datei … (verbaucht doch nur Webspace …) kannst du ja auch einfach immer wenn die Seite von dem User besucht wird neu aus der Datenbank holen … (bissal aufwendiger aber ich würds machen so ists immer aktuell) :wink:

lg flo

Aber das Problem ist doch, dass ich für jeden User eine userseite doch bruache?
Wie soll ich denn eine Allgemeine Seite nehmen? Wenn ich z.B. Userx und Usery habe, muss man ja die Userprofile aufrufen können.
bsp /userx.php /usery.php
Ich kann ja nicht in userx.php die Daten für usery abrufen lassen :open_mouth:

Hi,

so in der art

profil.php?user=[hier-kommt-der-user-name]

und dann halt ne datenbank abfrage die $_GET[user] nimmt

mhh klingt irgendwie logischer :smiley:

Ich werd mal versuchen, das so umzusetzen :wink:

Hi,

schau dir einfach mal das an.

Dein PHP Script sieht dann z.B. so aus:

[code]<?php
$user = $GET[‘uebergabe’];
$muster_user_name = "/^[a-zA-Z0-9-
.]{5,15}$/";
if (preg_match($muster_user_name, $user) == 0) {
die(“Manipulation”);
}

//Hier gehts ganz normal weiter
$sql = “SELECT * FROM usertabelle WHERE user=’$user’”;
… bla bla bla
?>
[/code]

Das PHP Script prüft zusätzlich ob der Benutzername auch nur aus Buchstaben, zahlen, minus(-), unterstrich(_) und punkten (.) besteht … Außerdem muss der Username mindesten 5 Zeichen und maximal 15 Zeichen haben.
Das ist eigentlich nur zu deiner eigenen Sicherheit und muss dementsprechend angepasst werden … (wie halt deine Usernamen aussehn). Dadurch sind keine SQL Injektionen möglich, da das Script abbricht sobald der Usernamen nicht den Kriterien enspricht.

lg flo

Mh funktioniert nicht ganz :frowning:

Ich habe die .htacces erstellt

RewriteEngine On
RewriteRule ^(.*).php$ user.php?nickname=$1

dann die Datei user.php

<?php
$user = $_GET['nickname'];
$muster_user_name = "/^[a-zA-Z0-9-_.]{4,15}$/";
if (preg_match($muster_user_name, $user) == 0) {
  die("Manipulation");
}

$connectionid = mysql_connect ("localhost", "dbacc", "dbpw"); 
if (!mysql_select_db ("db", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 
$sql = "SELECT * FROM user WHERE Nickname='$user'";
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

echo '<table width="670" cellspacing="1" cellpadding="1" border="0">';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<td>". $zeile['ID'] . "</td>";
  echo "<td>". $zeile['Nickname'] . "</td>";
  echo "</tr>";
}
echo "</table>";

mysql_free_result( $db_erg );
?>

Und rufe da ganze dann über /user.php?nickname=Admin auf.
Und die Seite die erscheint ist leer. Keine fehlermeldung.

Edit: Mir fehlt grad auf, dass sobald ich die .htaccess uploade, jeder meiner Seiten weiß ist, und beim aufruf über meine .xe.cx Domain kommt ein 500fehler.
Sobald ich die .htaccess lösche geht’s wieder normal.

EditEdit:
Ohne .htaccess Datei klappt aber alles super :open_mouth:


Damit brauchst du dir keine Sorgen mehr um die Daten zu machen, alles was schaden anrichten könnte wird maskiert und du kannst den Nutzer mehr Spielraum bei der Nameswahl lassen.

Damit brauchst du dir keine Sorgen mehr um die Daten zu machen, alles was schaden anrichten könnte wird maskiert und du kannst den Nutzer mehr Spielraum bei der Nameswahl lassen.

[quote=“vankhon”]Ich habe die .htacces erstellt

RewriteEngine On
RewriteRule ^(.*).php$ user.php?nickname=$1

[/quote]
Es heißt .htaccess (2 s am ende :wink:)
Außerdem was mir gerade auffällt das gibt ja eine Endlosschleife … änders mal so ab

RewriteEngine On RewriteRule ^(.*).html$ user.php?nickname=$1
So dann musst du nur flo.html aufrufen.
Außerdem achtung wenn in dem ordner andere .html datein liegen können diese nicht mehr aufgerufen werden … deshalb würde ichs so lösen:
/profil/USERNAME.html
also einfach in nen Ordner rein :wink:

lg flo

okay, die Datei hieß bei mir auch .htaccess da war nich der Fehler ;D

Eins wär da noch :wink:

durch htmlspecialchars kann ja weder HTML noch php ausgeführt werden in der Datei. Gibt es denn eine Möglichkeit, dass HTML ausführbar ist, PHP allerdings nicht?

Ja würd schon gehn obs sinn macht ?? wenn alle ihren werbecode auf ihren seiten einbetten, 30 videos die gleichzeitig los gehn und sonstiger schmarrn würde ich dir nicht empfehlen … mach lieber was in die richtung bbc code wie hier im forum…

lg flo