Permalänk
Medlem

Skapa HTML-Sida genom php-script

hej
Tänkte kolla om det finns något script som skapar en "ny" sida när sidan laddas in.

T.ex:
När sidan "createindex.php" öppnas i webbläsaren så skapas sidan "user/index.html"
vars innehåll finns med i "createindex.php"

Ursäkta för krånglig beskrivning
Är nybörjare och inte så erfaren inom php
Tacksam för svar

Permalänk

Jo, det går att gör t ex så här:

$username = "kalle";
$contents = "<html><body>Här är min indexsida</body></html>";
$path = "users/" . $username . "/index.html";
file_put_contents($path, $contents);

Permalänk
Medlem
Skrivet av stingray454:

Jo, det går att gör t ex så här:

$username = "kalle";
$contents = "<html><body>Här är min indexsida</body></html>";
$path = "users/" . $username . "/index.html";
file_put_contents($path, $contents);

provade detta

<?php $username = ''.$_SESSION['sess_user'].''; $contents = "<html><body>Här är min indexsida</body></html>"; $path = "user/" . $username . "/index.php"; file_put_contents($path, $contents); ?>

Resultat:
http://scriptdirect-server.uphero.com/setup-write.php

Vet du vad felet är ?

Permalänk
Medlem
Skrivet av hampuz13:

Vet du vad felet är ?

Om du vill ha hjälp med felet måste du ju givetvis ge oss filen setup-write.php, annars kan vi omöjligt lista ut det. Ett tips är att läsa felmeddelandena som du får och lära dig tolka dessa. "Parse error: syntax error, unexpected '<' in /home/a7520450/public_html/setup-write.php on line 10" säger exempelvis att du har ett felplacerat <-tecken på rad 10 i filen setup-write.php. Leta då upp det tecknet på den raden och undersök vad som är fel.

Visa signatur

Citera för svar!

Stationär: Fractal Design Define R6 | Asus Z370-P | Intel i7 8700k @ 3.7 Ghz | Corsair Vengeance LPX 32GB CL15 @ 3000 Mhz | Asus STRIX GTX960 4GB | Fractal Design Celsius S24 | 5 TB HDD | 250GB SSD (Samsung 850 EVO), 128GB SSD (Crucial M4) | Corsair HX 850W | W10
Bärbar: Sony Vaio Pro 13.3" | i7-4500U | 8GB RAM | 256GB SSD | Ubuntu

Permalänk
Medlem
Skrivet av RedRetro:

Om du vill ha hjälp med felet måste du ju givetvis ge oss filen setup-write.php, annars kan vi omöjligt lista ut det. Ett tips är att läsa felmeddelandena som du får och lära dig tolka dessa. "Parse error: syntax error, unexpected '<' in /home/a7520450/public_html/setup-write.php on line 10" säger exempelvis att du har ett felplacerat <-tecken på rad 10 i filen setup-write.php. Leta då upp det tecknet på den raden och undersök vad som är fel.

setup-write.php:

<?php session_start(); if (!isset($_SESSION['sess_user'])) { header("Location: index.php"); exit; } <?php $username = ''.$_SESSION['sess_user'].''; $contents = "<html><body>Här är min indexsida</body></html>"; $path = "user/" . $username . "/index.php"; file_put_contents($path, $contents); ?>

Permalänk
Medlem
Skrivet av hampuz13:

setup-write.php:

<?php
session_start();

if (!isset($_SESSION['sess_user'])) {
header("Location: index.php");
exit;
}

<?php
$username = ''.$_SESSION['sess_user'].'';
$contents = "<html><body>Här är min indexsida</body></html>";
$path = "user/" . $username . "/index.php";
file_put_contents($path, $contents);
?>

Prova byt ut den fetstilta raden till: $username = $_SESSION['sess_user']; och se om det går bättre, mest troligen är det dina punkter före och efter citationstecknen på den raden som ställer till det.

EDIT: Oh, wait! Du har ju på raden innan den jag markerade öppnat upp ett nytt PHP-block. Ta bort "<?php" där eller stäng blocket över (vet inte om "block" är korrekt terminologi då jag vanligtvis utvecklar i Java eller Haskell, men du förstår nog vad jag menar).

Visa signatur

Citera för svar!

Stationär: Fractal Design Define R6 | Asus Z370-P | Intel i7 8700k @ 3.7 Ghz | Corsair Vengeance LPX 32GB CL15 @ 3000 Mhz | Asus STRIX GTX960 4GB | Fractal Design Celsius S24 | 5 TB HDD | 250GB SSD (Samsung 850 EVO), 128GB SSD (Crucial M4) | Corsair HX 850W | W10
Bärbar: Sony Vaio Pro 13.3" | i7-4500U | 8GB RAM | 256GB SSD | Ubuntu

Permalänk
Medlem
Skrivet av hampuz13:

setup-write.php:

<?php
session_start();

if (!isset($_SESSION['sess_user'])) {
header("Location: index.php");
exit;
}

<?php
$username = ''.$_SESSION['sess_user'].'';
$contents = "<html><body>Här är min indexsida</body></html>";
$path = "user/" . $username . "/index.php";
file_put_contents($path, $contents);
?>

du öppnar php 2 gånger men stänger bara 1 gång

lite överkurs kan jag också lära dig att du helst bör använda javascript för att skicka vidare till andra sidor. om man har tillräckligt med knowledge kan man avbryta header location och fortsätta använda sidan.
alternativt lägger du till en die efter det så sidan inte laddar utifall att man stannar kvar

Visa signatur

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Permalänk
Medlem
Skrivet av Christley:

du öppnar php 2 gånger men stänger bara 1 gång

lite överkurs kan jag också lära dig att du helst bör använda javascript för att skicka vidare till andra sidor. om man har tillräckligt med knowledge kan man avbryta header location och fortsätta använda sidan.
alternativt lägger du till en die efter det så sidan inte laddar utifall att man stannar kvar

Ditt sista alternativ med att döda sidan om man väljer att stanna kvar är imo mycket bättre än att flytta över redirection till JS, då man med väldigt enkla medel kan förhindra JS från att köras på klienten.

Visa signatur

Citera för svar!

Stationär: Fractal Design Define R6 | Asus Z370-P | Intel i7 8700k @ 3.7 Ghz | Corsair Vengeance LPX 32GB CL15 @ 3000 Mhz | Asus STRIX GTX960 4GB | Fractal Design Celsius S24 | 5 TB HDD | 250GB SSD (Samsung 850 EVO), 128GB SSD (Crucial M4) | Corsair HX 850W | W10
Bärbar: Sony Vaio Pro 13.3" | i7-4500U | 8GB RAM | 256GB SSD | Ubuntu

Permalänk
Medlem
Skrivet av RedRetro:

Prova byt ut den fetstilta raden till: $username = $_SESSION['sess_user']; och se om det går bättre, mest troligen är det dina punkter före och efter citationstecknen på den raden som ställer till det.

EDIT: Oh, wait! Du har ju på raden innan den jag markerade öppnat upp ett nytt PHP-block. Ta bort "<?php" där eller stäng blocket över (vet inte om "block" är korrekt terminologi då jag vanligtvis utvecklar i Java eller Haskell, men du förstår nog vad jag menar).

Skrivet av Christley:

du öppnar php 2 gånger men stänger bara 1 gång

lite överkurs kan jag också lära dig att du helst bör använda javascript för att skicka vidare till andra sidor. om man har tillräckligt med knowledge kan man avbryta header location och fortsätta använda sidan.
alternativt lägger du till en die efter det så sidan inte laddar utifall att man stannar kvar

Tack för hjälpen

Koden ser nu ut så här:

<?php session_start(); if (!isset($_SESSION['sess_user'])) { header("Location: index.php"); exit; } ?> <?php $username = $_SESSION['sess_user']; $contents = "<html><body>Här är min indexsida</body></html>"; $path = "user/" . $username . "/index.php"; file_put_contents($path, $contents); ?>

Vilket fungerar perfekt!

Permalänk
Medlem
Skrivet av RedRetro:

Prova byt ut den fetstilta raden till: $username = $_SESSION['sess_user']; och se om det går bättre, mest troligen är det dina punkter före och efter citationstecknen på den raden som ställer till det.

EDIT: Oh, wait! Du har ju på raden innan den jag markerade öppnat upp ett nytt PHP-block. Ta bort "<?php" där eller stäng blocket över (vet inte om "block" är korrekt terminologi då jag vanligtvis utvecklar i Java eller Haskell, men du förstår nog vad jag menar).

Skrivet av Christley:

du öppnar php 2 gånger men stänger bara 1 gång

lite överkurs kan jag också lära dig att du helst bör använda javascript för att skicka vidare till andra sidor. om man har tillräckligt med knowledge kan man avbryta header location och fortsätta använda sidan.
alternativt lägger du till en die efter det så sidan inte laddar utifall att man stannar kvar

Nytt problem :/

PHP: (fungerar perfekt)

<?php session_start(); if (!isset($_SESSION['sess_user'])) { header("Location: index.php"); exit; } ?> <?php $username = $_SESSION['sess_user']; $contents = "<html><head><title>sidans titel</title></head><body>exempel test</body></html>"; $path = "user/" . $username . "/index.php"; file_put_contents($path, $contents); ?>

När jag lägger till <iframe src="file.txt"></iframe>:

<?php session_start(); if (!isset($_SESSION['sess_user'])) { header("Location: index.php"); exit; } ?> <?php $username = $_SESSION['sess_user']; $contents = "<html><head><title>sidans titel</title></head><body>exempel test<iframe src="file.txt"></iframe></body></html>"; $path = "user/" . $username . "/index.php"; file_put_contents($path, $contents); ?>

Kommer "Parse error: syntax error, unexpected T_STRING in /home/a7520450/public_html/setup-write.php on line 12" upp

Permalänk
Medlem

@hampuz13 Ändra "file.txt" till 'file.txt' så borde det fungera i min mening.

Visa signatur

Chassi: Fractal Design Meshify C Mini | CPU: AMD Ryzen 5 3600 | Kylare: Be Quiet! Dark Rock Pro 4 | Graffe: ASUS 1070 8GB ROG STRIX DC3 | PSU: Corsair RM750X V2 | RAM: Corsair Vengence 32GB 3200 MHz | MOBO: MSI B450M MORTAR MAX
CS:GO-Maps (App) Sweclockers (App)

Permalänk
Medlem
Skrivet av hampuz13:

Nytt problem :/

PHP: (fungerar perfekt)

<?php
session_start();

if (!isset($_SESSION['sess_user'])) {
header("Location: index.php");
exit;
}
?>

<?php
$username = $_SESSION['sess_user'];
$contents = "<html><head><title>sidans titel</title></head><body>exempel test</body></html>";
$path = "user/" . $username . "/index.php";
file_put_contents($path, $contents);
?>

När jag lägger till <iframe src="file.txt"></iframe>:

<?php
session_start();

if (!isset($_SESSION['sess_user'])) {
header("Location: index.php");
exit;
}
?>

<?php
$username = $_SESSION['sess_user'];
$contents = "<html><head><title>sidans titel</title></head><body>exempel test<iframe src="file.txt"></iframe></body></html>";
$path = "user/" . $username . "/index.php";
file_put_contents($path, $contents);
?>

Kommer "Parse error: syntax error, unexpected T_STRING in /home/a7520450/public_html/setup-write.php on line 12" upp

Du har inte escapeat dina cituationstecken. Sätt $contents med ' istället för ", eller escapea dina cituationstecken med \.

Visa signatur

11600K@5.1 GHz + 32GB Corsair Vengeance RGB PRO 3200@3400 MHz + MSI RTX 2080 Super Gaming X Trio +
WDC Blue SN550 1TB + Black OEM SN730 500GB + Kingston A1000 480GB + A2000 500GB + NV2 1TB + 2TB R10 + RGB most of THE THINGS! + Corsair 4000D Airflow + 2*ZyXEL NSA326 2*3TB @ R1 + Netgear RN2100 4*3TB @ R10 + RN204 4*4TB @ R5 + Synology DS216j 2*4TB @ SHR R1 + DS418 4*8TB @ SHR R6
| tmp: R5 3600@4.2 GHz + 32GB 2666@3066MHz + 2070 8GB + 1 TB NV2 & 512GB SN730

Permalänk
Medlem
Skrivet av hampuz13:

Nytt problem :/

Rekommenderar dig starkt att läsa på mer om grunderna i PHP, det fungerar tyvärr inte att fråga efter minsta lilla problem där svaret är en googling bort. Finns en uppsjö av böcker/tutorials/dokumentation på nätet

Visa signatur

Citera för svar!

Stationär: Fractal Design Define R6 | Asus Z370-P | Intel i7 8700k @ 3.7 Ghz | Corsair Vengeance LPX 32GB CL15 @ 3000 Mhz | Asus STRIX GTX960 4GB | Fractal Design Celsius S24 | 5 TB HDD | 250GB SSD (Samsung 850 EVO), 128GB SSD (Crucial M4) | Corsair HX 850W | W10
Bärbar: Sony Vaio Pro 13.3" | i7-4500U | 8GB RAM | 256GB SSD | Ubuntu