Vánoční nadílka Vánoční nadílka
Až 80% zdarma! Předvánoční BLACK FRIDAY akce. Více informací
Avatar
Petr Věříš:23. července 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. července 10:55
Avatar
Lasvit
Člen
Avatar
Lasvit:23. července 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. července 11:56
Avatar
Odpovídá na Lasvit
Petr Věříš:23. července 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:

<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($_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. července 13:37
Avatar
Lasvit
Člen
Avatar
Lasvit:23. července 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. července 15:15
 
Nahoru Odpovědět  -2 23. července 15:14
Avatar
Lasvit
Člen
Avatar
Lasvit:23. července 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. července 15:54
Avatar
Roman Duchoň:23. července 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. července 21:00
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 23. července 21:00
RD
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24. července 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. července 8:37
Avatar
Petr Věříš:24. července 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. července 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.