Problém s podmínkou – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s podmínkou – PHP – Fórum – Programujte.comProblém s podmínkou – PHP – Fórum – Programujte.com

 

Dominika
~ Anonymní uživatel
8 příspěvků
22. 8. 2013   #1
-
0
-

Zdravím, mám potíž s podmínkami.Tento script má fungovat tak, že pomocí cyklu for se postupně každý řádek uloží do proměnné $r a zároveň porovnává hodnoty ze souboru s hodnotami, které byly odeslány z formuláře. Problém je v tom, že když vyplním správné údaje, tak se vypíše odpověď  "ok" a zároveň odpověď "ne". Neví někdo co s tím? Děkuji za odpověď.

$data=file("prihlaseni.txt");

for($i = 0; $i < Count ($data); $i++)
{
    $r = explode(" ",$data[$i]);
    if(isset($r[1]) and($r[0]))
        if(($_POST["mail"]!=$r[1] or $_POST["heslo"]!=$r[0]))
            echo "ne";
    if(isset($r[1]) and($r[0]))
        if(($_POST["mail"]==$r[1] or $_POST["heslo"]==$r[0])) 
            echo "ok";
 }
Nahlásit jako SPAM
IP: 77.48.106.–
KIIV
~ Moderátor
+43
God of flame
22. 8. 2013   #2
-
0
-

co je napriklad ucelem tohoto:

if(  isset($r[1])   and   ($r[0])  )  ?

($_POST["mail"]==$r[1] or $_POST["heslo"]==$r[0])

proc je tam ta prvni stejna podminka vickrat? neumime bloky? A vlastne u ok i else?

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Dominika
~ Anonymní uživatel
8 příspěvků
22. 8. 2013   #3
-
0
-

if( isset($r[1]) and ($r[0]) ) -> toto mi zajistilo, že se mi neukazuje hláška Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-12.1\www\uvod\pr.php on line 30
 

Nahlásit jako SPAM
IP: 77.48.106.–
KIIV
~ Moderátor
+43
God of flame
22. 8. 2013   #4
-
0
-

kazdopadne kdyz to odchyti podminka ze jedno z hesla ci loginu neni spravne, tak opak je prirozene ze jsou obe spravne...

muzes pak vyhodit druhou podminku ktera je uz uplne blbe... staci aby se zadalo jedno z tech dvou spravne a uz je to pravda...

ja bych to upravil treba takhle:

<?php

$data=file("prihlaseni.txt") ;
foreach ($data as $line) {
  $r = split(" +", trim($line)); // trim zlikviduje bile znaky na zacatku a konci radky
                                 // split deli regularnim vyrazem projde i vicero mezer mezi

  if(isset($r[1]) and isset($r[0])) { // oboje je definovane pak:
    if(($_POST['mail'] != $r[1]) or ($_POST["heslo"] != $r[0])) {
      echo"ne\n"; // jedno z toho nesouhlasilo... 
    } else {
      echo"ok\n"; // sem se dostane jen kdyz souhlasi oboje
    }
  }
}

?>
Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Dominika
~ Anonymní uživatel
8 příspěvků
22. 8. 2013   #5
-
0
-

To mi vyhodilo hlášku: Deprecated: Function split() is deprecated in C:\Program Files (x86)\EasyPHP-12.1\www\uvod\pr.php on line 26 a opět se mi vypsalo zároveň ok/ne. Není ještě nějaká jiná podobná funkce?

Nahlásit jako SPAM
IP: 77.48.106.–
KIIV
~ Moderátor
+43
God of flame
22. 8. 2013   #6
-
0
-

#5 Dominika
tak asi preg_split (nebo nechat ten explode a doufat, ze tam nikdy nebude vic mezer mezi)

Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Dominika
~ Anonymní uživatel
8 příspěvků
22. 8. 2013   #7
-
0
-

nefunguje ani explode, stále se vypisují zároveň dvě odpovědi

Nahlásit jako SPAM
IP: 77.48.106.–
yetty
~ Redaktor
+5
Super člen
22. 8. 2013   #8
-
0
-

Jak vypadá soubor prihlaseni.txt? Tipnul bych, že má více řádků (možná druhý prázdný) a proto to vypisuje obojí. Explode nevadí, ale bylo by vhodné omezit ho pomocí $limit:

explode (string $delimiter, string $string [, int $limit])
Nahlásit jako SPAM
IP: 46.23.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 22 hostů

Podobná vlákna

Problém s podmínkou if — založil k2k21

Problem s podmínkou v c++ — založil riegger

Problém s podminkou — založil Coal_Asasin

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý