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

PHP - Funkcje warunkowe - metoda $_POST - prawidłowy warunek

Object Storage Arubacloud
0 głosów
1,263 wizyt
pytanie zadane 2 maja 2015 w PHP przez Mateusz Analityk Stary wyjadacz (13,710 p.)
<?php
if (is_string($_POST["imie"]) == 1 || is_string($_POST["nazwisko"]) == 1){
    echo "true";
}
else  {
  echo "false";
}
  ?>

Chciałbym aby jeśli dane przesłane metodą POST były tekstem w tedy wyświetliło mi się true natomiast jeśli dane są puste lub przesłana zostały znaki specjalne, liczby itd wyświetliło wartość false.

Sorry że z takim banałem piszę, ale nie umiem tego zrobić i starciłem cierpliwość albo zwraca mi w każdym wypadku prawda albo w każdym wypadku zwraca wartość false.

6 odpowiedzi

+1 głos
odpowiedź 2 maja 2015 przez Progo Bywalec (2,020 p.)
wybrane 2 maja 2015 przez Mateusz Analityk
 
Najlepsza

 

<?php
     function is_true_string($s){
          if(preg_match('/^[\pL]*$/u', $s))
               return true;
          else
               return false;
    }
     if(is_true_string($_POST["imie"]) && is_true_string($_POST["nazwisko"]))
          echo 'true';
     else
          echo 'false';
?>
komentarz 2 maja 2015 przez efiku Szeryf (75,160 p.)

 In the standard C locale letters are just[A-Za-z]

:)

 

komentarz 2 maja 2015 przez Progo Bywalec (2,020 p.)
Oj nie zauważyłem, moja wina, dzięki kolego ;)

Poprawione.
komentarz 2 maja 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Ten kod działa i przepuszcza tylko string teraz jeszcze we własnym zakresie rozszerzę warunek o to co chiałem zrobić pierwotnie a już nie pamiętam:)
+2 głosów
odpowiedź 2 maja 2015 przez efiku Szeryf (75,160 p.)
edycja 3 maja 2015 przez efiku

Jezeli ktokolwiek wejdzie tu i przeczyta mój post to chciałbym dać wam kilka linków odnośnie Manuala. 


1. empty http://php.net/manual/en/function.empty.php

Empty sprawdzi czy to co przesyłasz czasami nie jest "puste"


2. filtry http://php.net/manual/en/ref.filter.php | http://php.net/manual/en/function.filter-input.php

Po coś są one w php prawda? Lepiej użyć ich, niż regexpów i jakiś autorskich funkcji..  Przypatrz się dobrze dokumentacji, bo nie tylko GET można filtrować, ale także POST. 

3. isset() http://php.net/manual/en/function.isset.php

Sprawdza czy zmienna jest zainicjowana i czy nie jest nullem

 

Prosty przykład filtrów: 

Cytat  http://php.net/manual/en/function.filter-input.php#115086

Without this function...

<?php
if (!isset($_GET['a'])) {
    $a = null;
} elseif (!is_string($_GET['a'])) {
    $a = false;
} else {
    $a = $_GET['a'];
}
$b = isset($_GET['b']) && is_string($_GET['b']) ? $_GET['b'] : '';
?>

With this function...

<?php
$a = filter_input(INPUT_GET, 'a');
$b = (string)filter_input(INPUT_GET, 'b');
?>

 

Pamiętaj! Nie czekaj na gotowy kod, myśl! ( ͡° ͜ʖ ͡°)

komentarz 2 maja 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Pytanie następująco. Czemu używasz metody get skoro ona służy do operacji na plikach pomiędzy użytkownikiem a serwerem.
komentarz 2 maja 2015 przez efiku Szeryf (75,160 p.)
Pytanie następujące: Czy nie zauważyłeś, że to jest dosłownie to samo co jest na manualu, że podlinkowałem?

Pytanie kolejne, zapoznałeś sie z filtrami?

Czy wiesz, że jest tam też dla POST a nie tylko GET?
komentarz 3 maja 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Tak wiedziałem o tym. ale o tym że na manualu jest też dla metody POST już nie.
0 głosów
odpowiedź 2 maja 2015 przez jaca121212 Nałogowiec (40,760 p.)
sporóbuj z funkcja isset lub empty
0 głosów
odpowiedź 2 maja 2015 przez HaKIM Szeryf (87,590 p.)

A spróbuj tak:

 

$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];

if(is_string($imie) OR is_string($nazwisko))
{
    echo 'true';
}else{
    echo 'false';
}

Pozdrawiam.

:-)

komentarz 2 maja 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
edycja 2 maja 2015 przez Mateusz Analityk
ten kod zwraca zawsze wartość true po za tym wprowadzenie dodatkowych zmiennych które w tym wypadku są nie potrzebne wydłuża czas wczytywania kodu.

ps: Ja napisałem dokładnie to samo ale bez tylu zmiennych.
komentarz 2 maja 2015 przez HaKIM Szeryf (87,590 p.)
Dzięki za dawkę wiedzy. :)

Szkoda że nie napisałeś, dalczego zawsze będzie true. :)
0 głosów
odpowiedź 2 maja 2015 przez GrzesiekB Gaduła (3,720 p.)
Tutaj raczej bez regular expression się nie obejdzie. Z tego co pamiętam wszystkie dane przesłane przez POST/GET są domyślnie typem string. Jak chcesz wykluczyć inne znaki niż litery to tylko reg exp...
0 głosów
odpowiedź 3 maja 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Dzękuję wam za pomoc a oto gotowy skrypt:

<?php
  function is_true_string($s){
      if(preg_match('/^[\pL]*$/u', $s))
           return true;
      else
           return false;
    }

if (empty($_POST["imie"]) || empty($_POST["nazwisko"])) {

  echo "<p style=\"color:red\">Musisz wypełnić wszystkie pola!</p>";

   echo '<a href="./">Go to last page</a>';

} else {
  
  if(is_true_string($_POST["imie"]) && is_true_string($_POST["nazwisko"])){
        $imie = $_POST["imie"];
        $nazwisko = $_POST["nazwisko"];
        echo 'Imię: '. $imie .'</br> Nazwisko: '. $nazwisko;
        echo '</br><a href="./">Go to last page</a>';
    }
      else {
        echo 'Zostały wpisane nieprawidłowe znaki </br>';
        echo '<a href="./">Go to last page</a>';
      }

  function is_string_save($b){

}
}
?>

Podobne pytania

0 głosów
3 odpowiedzi 918 wizyt
pytanie zadane 15 lutego 2017 w JavaScript przez Vorex444 Dyskutant (9,610 p.)
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 4 listopada 2018 w PHP przez Krzysio4224 Obywatel (1,690 p.)
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 10 lipca 2018 w PHP przez matizuu Obywatel (1,100 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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!

...