NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Diskuze: Jak vypsat proměnu z jiného PHP skriptu

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Petr Věříš:23.7.2018 10:55

Nejde mě vypsat proměnná z jiného PHP skriptu která v něm není od začátku určená. Mám soubor HTML ve kterém je formulář. Po stisknutí tlačítka v HTML souboru se text z vyplněných polích odešle do jednoho PHP skriptu který zkontroluje jestli je dobře heslo. Pak bych ty proměné s uživatelským jménem a heslem potřeboval poslat do druhého PHP skriptu který by pracoval s uživatelským jménem.

Zkusil jsem: Zkoušel jsem funkci include.

Chci docílit: Aby to všechno fungovalo. :-)

 
Odpovědět
23.7.2018 10:55
Avatar
Lasvit
Člen
Avatar
Lasvit:23.7.2018 11:56

Můžeš prosím poslat nějaké ukázky kodu? Chybu? Myslím si, že chyba bude ve tvém html souboru, přesněji formuláři.

Napsal si toho hodně a přitom nic.

 
Nahoru Odpovědět
23.7.2018 11:56
Avatar
Odpovídá na Lasvit
Petr Věříš:23.7.2018 13:37

HTML soubor:
<html>
<head>
<meta charset="utf-8">
</head>
<body>

<h2>Přihlášení</h2>

<form id="login" action='login-sys.php' method='POST'>
Uživatelské jméno:<br>
<input type="text" name="username"><br>
Heslo:<br>
<input type="text" name="passwor­d"><br>
<input type="submit" name="submit" value="Přihlásit se">
</form>
</body>
</html>

PHP soubor č. 1:
<?php

error_reporting(0);

$submit = $_POST['submit'];
$username = STRIP_TAGS($_POS­T['username']);
$password = STRIP_TAGS($_POS­T['password']);
$date = date("Y-m-d");

if ($submit)
{
if(file_exists("u­sers/".$userna­me))
{
if(file_exists("u­sers/".$userna­me."/passwd.txt"))
{
$ServerPassword = file_get_conten­ts("users/".$u­sername."/pas­swd.txt", FILE_USE_INCLU­DE_PATH);
if($ServerPassword == $password)
{
$logeduser = fopen("users/"­.$username."/lo­ged-user.txt", "w") or die("A jé jé, chyba.");
fwrite($logeduser, $username);
fclose($logeduser);
header("Location: main.php");
}
else
{
echo "Špatné heslo!";
}
}
else
{
echo "A jé jé, chyba.";

[/code]";
}
}
else
{
if($username == "")
{
echo "Prosím vyplňte všechna pole!";
}
else
{
echo "Uživatel neexistuje.";
}
}
}

?>

PHP soubor č. 2:
<?php

include 'login-sys.php';
echo "My username: $username";

?>

 
Nahoru Odpovědět
23.7.2018 13:37
Avatar
Lasvit
Člen
Avatar
Lasvit:23.7.2018 15:14
HTML soubor:
<html>
<head>
<meta charset="utf-8">
</head>
<body>

<h2>Přihlášení</h2>

<form id="login" action='login-sys.php' method='POST'>
Uživatelské jméno:

<input type="text" name="username">

Heslo:

<input type="text" name="password">

<input type="submit" name="submit" value="Přihlásit se">
</form>
</body>
</html>

PHP soubor č. 1:
<?php

error_reporting(0);

$submit = $_POST['submit'];
$username = STRIP_TAGS($_POST['username']);
$password = STRIP_TAGS($_POST['password']);
$date = date("Y-m-d");

if ($submit)
{
if(file_exists("users/".$username))
{
if(file_exists("users/".$username."/passwd.txt"))
{
$ServerPassword = file_get_contents("users/".$username."/passwd.txt", FILE_USE_INCLUDE_PATH);
if($ServerPassword == $password)
{
$logeduser = fopen("users/".$username."/loged-user.txt", "w") or die("A jé jé, chyba.");
fwrite($logeduser, $username);
fclose($logeduser);
header("Location: main.php");
}
else
{
echo "Špatné heslo!";
}
}
else
{
echo "A jé jé, chyba.";

";
}
}
else
{
if($username == "")
{
echo "Prosím vyplňte všechna pole!";
}
else
{
echo "Uživatel neexistuje.";
}
}
}

?>

PHP soubor č. 2:
<?php

include 'login-sys.php';
echo "My username: $username";

?>
Editováno 23.7.2018 15:15
 
Nahoru Odpovědět
23.7.2018 15:14
Avatar
Lasvit
Člen
Avatar
Lasvit:23.7.2018 15:54
  • Include bys měl mít spíš v PHP souboru č.1 protože PHP soubor č.2 se ti nespustí
  • v html existuje type password
  • Určitě bych neměl vypnuté hlášení chyb
  • STRIP_TAGS() -> strip_tags()
  • Doporučím tohle dělat přes nějakou DB, naučíš se toho víc a hlavně to budeš potřebovat i v budoucnu
 
Nahoru Odpovědět
23.7.2018 15:54
Avatar
Roman Duchoň:23.7.2018 21:00

Jo, co třeba databáze? Stejně se jim nevyhneš, pokud to myslíš s programováním vážně.
A nebo... proměnou $_SESSION (nezapomeň na session_start())?

A nebo co zkusit pro začátek vložit kód rovnou do té hlavní stránky - tj. nemít jen "HTML soubor", ale třeba index.php s HTML formulář odkazujícím sám na sebe?

Editováno 23.7.2018 21:00
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
23.7.2018 21:00
RD
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.7.2018 8:37

viz Lasvit a Roman Duchoň

1. Urcite si tam pridej zobrazovani chyb. Zmen nastaveni php.ini nebo pres .htaccess nebo v php pridej nahoru toto

error_reporting(E_ALL);
ini_set('display_errors', 1);

2. STRIP_TAGS - nazev te funkce je malymi pismeny. Zmena pismena je jako zmenit slovo 'jabka' na 'hrusky'.

3. Tvuj problem se da resit pomoci

  • ukladani promennych, databaze nebo session
session_start()
$_SESSION['nazev'] = 'hodnota'; // <input name=nazev value=hodnota>
header(...url...)
  • pouziti include / require + global

To radeji ukazovat nebudu.

  • pouziti include a volani funkce
include 'overeni.php';
include 'dalsikod.php';
overUzivatele('jmeno', 'heslo');
funkceZDalsiKod('jmeno', 'heslo');
  • nebo, pokud to chces presmerovat pomoci header (GET), tak se da jeste pouzit get metoda, ale hackeri tohle maji radi, takze spis nee. Rozhodne ne, pokud by url adresou nebo vysledkem toho php mel ziskat falesny uzivatel citlive udaje, vysledky sql dotazu, jmena, hesla, ...
//header(...url...)
header("Location: main.php");
header("Location: main.php?jmeno=aaa&heslo=bbb");
 
Nahoru Odpovědět
24.7.2018 8:37
Avatar
Petr Věříš:24.7.2018 13:47

Díky za vaše odpovědi jsem začátečník v PHP, takže databázi zatím nebudu používat. Vyřešil jsem to tedy funkcí session.

 
Nahoru Odpovědět
24.7.2018 13:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.