• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd przy uruchomieniu

Object Storage Arubacloud
0 głosów
135 wizyt
pytanie zadane 5 sierpnia 2016 w PHP przez Sebastian Szyja Bywalec (2,810 p.)
zmienione kategorie 5 sierpnia 2016 przez Arkadiusz Waluk

Witam, mam problem gdy uruchamiam ten kod wyskakuje coś takiego: 

 

  

a po naciśnięciu buttona bledy sie kasuje jak to naprawić chce aby blad nie wyskakiwał ! :(

KOD : 

<?php


$kod_html = '<form  method="post" action="">
<fieldset style="padding: 10px; width: 300px;">
<legend style="display: block; padding: 2px; border: 1px solid #c8c8c8; background: #eeeeee; width: 100px;">Generuj hasło:</legend><br />
<label>Długość hasła:</label> <input class="input" type="text" name="dlugosc" value="5" size="2" /><br />
<label>małe litery</label> <input type="checkbox" name="male" value="abcdefghijklmnopqrstuvwxyz" checked="checked"/><br />
<label>duże litery</label> <input type="checkbox" name="duze" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ" checked="checked"/><br />
<label>cyfry</label> <input type="checkbox" name="cyfry" value="1234567890" checked="checked"/><br />
<label>znaki interpukcyjne </label> <input type="checkbox" name="interpunkcyjne" value="()-_=+{}[]:;,." checked="checked"/><br />
<label>znaki specjalne  </label> <input type="checkbox" name="specjalne" value="!?@#$%^&*/\" checked="checked"/><br />
<label>&nbsp;</label> <input type="submit" name="submit" value="Generuj" />
</fieldset>
</form>';

$interpunkcyjne = strtolower($_POST['interpunkcyjne']);
$specjalne = strtolower($_POST['specjalne']);
$male = strtolower($_POST['male']);
$duze = strtoupper($_POST['duze']);
$cyfry = intval($_POST['cyfry']);
$dlugosc = intval($_POST['dlugosc']);

function generuj($dlugosc, $male, $duze, $cyfry, $specjalne, $interpunkcyjne)
{
if($dlugosc > 99 || $dlugosc < 5)
die("<br><font color=\"red\"> Długość hasła nie może przekraczać 99 i nie może być mniejsza od 5</font>");
$znaki = $male . $duze . $cyfry . $specjalne . $interpunkcyjne;
$pass = "";
$len = strlen($znaki) - 1;
for($i =0; $i < $dlugosc; $i++)
   {
       $dowolne = rand(0, $len);
       $pass .=  $znaki[$dowolne];
   }
return $pass;
}
//wywolujemy formularz
echo $kod_html;
//jesli komorka "liczby" bedzie pusta to skrypt sobie wkleji zero w $liczby- cza to
// zlikwidowac :]

if($cyfry == 0)
{
$cyfry = null;
}

//generujemy
echo 'Wygenerowane hasło:<br /><br />';
$g = generuj($dlugosc, $male, $duze, $cyfry, $specjalne, $interpunkcyjne);
echo "<font size=\"4\">$g</font>";


?>

Pomożece? Pilne :D

1 odpowiedź

+1 głos
odpowiedź 5 sierpnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 10 czerwca 2017 przez Sebastian Szyja
 
Najlepsza
$interpunkcyjne = strtolower($_POST['interpunkcyjne']);
$specjalne = strtolower($_POST['specjalne']);
$male = strtolower($_POST['male']);
$duze = strtoupper($_POST['duze']);
$cyfry = intval($_POST['cyfry']);
$dlugosc = intval($_POST['dlugosc']);

To (i dalszy kod od generowania) wykonuje się u Ciebie przy każdym wejściu na stronę. A co, gdy ktoś nie wchodzi na stronę pierwszy raz i nie wysłał jeszcze formularza? A no właśnie, wtedy te elementy w tablicy $_POST nie istnieją bo formularz nie został przesłany, przez co rzuca błędy.

Rozwiązaniem jest sprawdzenie czy formularz został wysłany i tylko jeśli tak się stało to odczytywanie przesłanych danych i wykonywanie dalszych operacji. Najprościej możesz po prostu poprzez isset() sprawdzić czy istnieje np. $_POST['interpunkcyjne'] - jeśli tak to wykonywać dalsze operacje, jeśli nie to po prostu wyświetlić formularz.

komentarz 5 sierpnia 2016 przez Sebastian Szyja Bywalec (2,810 p.)

A pokażesz przykład na jednym? 

$interpunkcyjne = strtolower($_POST['interpunkcyjne']);

a ja zrobie resztę :D Bo naprawdę niewiem dokładnie jak to zrobić potrzebuję przykładu :D Jestem Nowicjuszem w JS :D

2
komentarz 5 sierpnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)

Jestem Nowicjuszem w JS :D

To cieszę się bardzo i życzę powodzenia w nauce JS, ale to o czym rozmawiamy to jest PHP ;) 

if (isset($_POST['interpunkcyjne'])) {
    // tutaj kod który ma się wykonać tylko gdy formularz zostanie wysłany
    // odczytanie danych z $_POST, wywołanie funkcji generującej itp.
}

 

komentarz 5 sierpnia 2016 przez Sebastian Szyja Bywalec (2,810 p.)
a mógłbyś mi pomóc w napisaniu tego kodu?
1
komentarz 5 sierpnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
Myślę, że właśnie to zrobiłem. Podałem Ci co jest przyczyną błędu, jak ma wyglądać warunek oraz co ma się w nim zawierać. Tak więc czego jeszcze oczekujesz? Jeśli tego, że przerobię ten kod i oddam Ci gotowe to od razu mówię że nie, nie daję gotowców.
1
komentarz 5 sierpnia 2016 przez jpacanowski VIP (101,940 p.)
if(!empty($_POST))
{
    // tutaj kod który ma się wykonać tylko gdy formularz zostanie wysłany
}

Podobne pytania

0 głosów
1 odpowiedź 143 wizyt
pytanie zadane 9 maja 2016 w Python przez Lukasz95 Bywalec (2,160 p.)
0 głosów
1 odpowiedź 109 wizyt
pytanie zadane 2 czerwca 2016 w JavaScript przez Michał_Warmuz Mądrala (5,830 p.)
0 głosów
0 odpowiedzi 109 wizyt
pytanie zadane 21 maja 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...