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

Błąd przy uruchomieniu

0 głosów
343 wizyt
pytanie zadane 5 sierpnia 2016 w PHP przez Sebastian Szyja Bywalec (2,950 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 (291,530 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,950 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 (291,530 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,950 p.)
a mógłbyś mi pomóc w napisaniu tego kodu?
1
komentarz 5 sierpnia 2016 przez Arkadiusz Waluk Ekspert (291,530 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ź 237 wizyt
pytanie zadane 9 maja 2016 w Python przez Lukasz95 Bywalec (2,160 p.)
0 głosów
1 odpowiedź 243 wizyt
pytanie zadane 2 czerwca 2016 w JavaScript przez Michał_Warmuz Mądrala (5,830 p.)
0 głosów
0 odpowiedzi 165 wizyt
pytanie zadane 21 maja 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,323 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...